You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android资源链接失败求助:HorizontalScrollView触发编译报错

问题描述

我开发的是基于Fragment布局的Android应用,编写XML布局文件时编辑器未显示任何错误,但调试时弹出「Android resource linking failed」错误提示;注释掉HorizontalScrollView组件后错误消失,但业务需要使用该组件,求解决方案。

相关代码

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;
    }
}
解决方案

1. 修复XML中的无效属性

在你的XML布局里,ID为services的TextView设置了android:background="",空字符串属于无效的资源引用,这是导致资源链接失败的直接原因。删除这个属性或者设置一个有效值(比如@android:color/transparent):

<TextView
    android:id="@+id/services"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:gravity="center"
    android:text="Services"
    android:textColor="@color/black"
    android:textSize="18sp"
    android:textStyle="bold" />

2. 确认第三方库依赖

你用到了CircleImageView和CardView,确保在模块级build.gradle文件中添加了正确的依赖:

  • CardView依赖:
implementation 'androidx.cardview:cardview:1.0.0'
  • CircleImageView依赖:
implementation 'de.hdodenhof:circleimageview:3.1.0'

添加后同步项目,避免因缺少库导致资源链接失败。

3. 验证HorizontalScrollView结构

HorizontalScrollView要求直接子布局只能有一个,你的代码已经满足该要求(每个HorizontalScrollView都只包含一个LinearLayout子布局),且子布局宽度设置为wrap_content,这部分无需修改。

4. 清理重建项目

完成上述修改后,执行以下操作:

  • 点击Android Studio菜单栏的Build > Clean Project
  • 再点击Build > Rebuild Project
  • 重启Android Studio后重新运行项目

这些操作可以清除缓存中的无效资源,确保修改后的代码被正确编译。


内容的提问来源于stack exchange,提问作者Shaurya Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:10:37