尝试使用自定义属性时,标记片段找到了意外的名称空间前缀“custom”

时间:2015-07-13 01:20:52

标签: android-layout android-studio android-custom-attributes

我正在关注此android developer page以创建应用的自定义属性。一切都很顺利,我能够编译并查看结果。 但是提出问题的部分是IDE.Android Studio抱怨意外的命名空间自定义。有没有办法禁用/隐藏此错误消息?这非常烦人。

即使出现此错误,我也可以编译并运行该应用程序。

enter image description here

我遵循了以下步骤。

1)创建了res / values / attrs.xml文件并添加了

<?xml version="1.0" encoding="utf-8"?> <resources>
<declare-styleable name="FragArguments">
    <attr name="max_allowed" format="integer"/>
    <attr name="header" format="string"/>
</declare-styleable>

2)尝试在我的mainlayout文件的片段标签中使用

    <LinearLayout xmlns:custom="http://schemas.android.com/apk/res"
                          android:layout_width="fill_parent"
                          android:layout_height="0dip"
                          android:layout_weight="1">
                <fragment android:id="@+id/msg"
                          android:name="org.android.fragment.MessageFragment"
                          custom:max_allowed="85"
                          custom:header="@string/header"
                          android:layout_width="wrap_content"
                          android:layout_height="match_parent"/>
            </LinearLayout>

3。通过代码覆盖片段

的onInflate()方法应用自定义属性
   @Override
    public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) {
        super.onInflate(activity, attrs, savedInstanceState);

        TypedArray typedArray = activity.obtainStyledAttributes(attrs, R.styleable.FragArguments);
        max_allowed = typedArray.getInt(R.styleable.FragArguments_max_allowed, -1);
        header = typedArray.getString(R.styleable.FragArguments_header);
        typedArray.recycle();
    }

2 个答案:

答案 0 :(得分:5)

我刚刚找到了解决方案。

问题ID MissingPrefix 告诉lint只扫描缺少Android命名空间前缀的XML属性。所以我们可以这两种方式: -

  1. Canissue以下命令扫描主项目目录及其子目录下的文件。
  2.   

    lint --check MissingPrefix myproject

    1. 在android studio中创建一个包含以下内容的lint.xml文件并添加到app目录中。
    2. <?xml version="1.0" encoding="utf-8"?>
      <lint>
          <issue id="MissingPrefix" severity="ignore"/>
      </lint>
      

答案 1 :(得分:1)

感谢@Nicks的回答。您还可以将以下行添加到build.gradle文件中,在android {}范围内:

    lintOptions {
        disable 'MissingPrefix'
    }