Android资源链接失败
在XML文件中编码时没有显示任何错误,但当我调试时,它会弹出一条错误消息,说";Android资源链接失败";。评论水平滚动视图可以消除错误,但我需要使用它。这是一个碎片布局应用程序。请尽快提供解决方案!
XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment">
<LinearLayout
android:id="@+id/l1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@color/black"
android:gravity="center"
android:text="MECHDROID"
android:textColor="@color/white"
android:textSize="28sp"
android:textStyle="bold" />
</LinearLayout>
<RelativeLayout
android:id="@+id/r1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/l1">
<TextView
android:id="@+id/services"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background=""
android:gravity="center"
android:text="Services"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<HorizontalScrollView
android:id="@+id/hsv_services"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/services"
android:background="@color/silver">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal"
android:weightSum="2">
<androidx.cardview.widget.CardView
android:id="@+id/web_dev_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="Website Development" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/web_support_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="Website Support" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/android_dev_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="Android App Development" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/ios_dev_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="iOS App Development" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/dm_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="Digital Marketing" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</HorizontalScrollView>
<TextView
android:id="@+id/career"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/hsv_services"
android:layout_margin="10dp"
android:gravity="center"
android:text="Career"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<HorizontalScrollView
android:id="@+id/hsv_career"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/career"
android:background="@color/silver">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal"
android:weightSum="2">
<androidx.cardview.widget.CardView
android:id="@+id/electrician_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="Electrician" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/flutter_dev_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="Flutter Developer" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/ai_engineer_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="AI Engineer" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/marketing_manager_btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="3dp"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="10dp"
android:src="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:text="Marketing Manager" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>
</RelativeLayout>
Java
package com.mechdroid.mechtech.ui.home;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.mechdroid.mechtech.databinding.FragmentHomeBinding;
public class HomeFragment extends Fragment {
private FragmentHomeBinding binding;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
HomeViewModel homeViewModel =
new ViewModelProvider(this).get(HomeViewModel.class);
binding = FragmentHomeBinding.inflate(inflater, container, false);
View root = binding.getRoot();
return root;
}
}
在您的代码中,您有android:background=""
,但您的<TextView>
中的背景属性没有给定任何值,而android:id="@+id/services"
为背景提供一些价值。
<TextView
android:id="@+id/services"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="" //give value here
android:gravity="center"
android:text="Services"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
注意:您还可以通过使用带有适配器和项布局的<RecyclerView>
来简化xml代码。只为一个项目制作布局文件,然后使用回收器视图和适配器。要使回收器视图水平,请在回收器视图app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:orientation="horizontal"
中使用这两个属性。然后创建一个项目列表及其值,以传递给适配器,适配器将自动设置它们。若要处理点击事件,可以使用界面。因此,您的xml将大大简化。有了它,您可以在不更改xml的情况下,轻松地在代码中添加任意多的项。
您将hsv_services
HorizontalScrollView中的TextViewservices
引用为@+id/services
。
<TextView
android:id="@+id/services"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background=""
android:gravity="center"
android:text="Services"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<HorizontalScrollView
android:id="@+id/hsv_services"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/services"
android:background="@color/silver">
当引用其他视图ID时,您需要删除+
,因为+
用于注意它是一个新资源,应该添加到资源文件中。
<TextView
android:id="@+id/services"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background=""
android:gravity="center"
android:text="Services"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<HorizontalScrollView
android:id="@+id/hsv_services"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/services"
android:background="@color/silver">
这里有更详细的解释