java - Android 属性已经定义

标签 java android android-custom-view

我正在尝试使用名为 borderWidth 的属性制作自定义 View 。当我尝试运行我的应用程序时出现错误:

E:\Android Studio Projects\MyApp\app\build\intermediates\res\merged\debug\values\values.xml Error:(341) Attribute "borderWidth" has already been defined

在它指向的 values.xml 文件中,我可以看到 borderWidth 已经被用于默认的 FloatingActionButton 和一个结合其他默认的 android 小部件:

<style name="Widget.Design.FloatingActionButton" parent="android:Widget">
    <item name="android:background">@drawable/design_fab_background</item>
    <item name="backgroundTint">?attr/colorAccent</item>
    <item name="fabSize">auto</item>
    <item name="elevation">@dimen/design_fab_elevation</item>
    <item name="pressedTranslationZ">@dimen/design_fab_translation_z_pressed</item>
    <item name="rippleColor">?attr/colorControlHighlight</item>
    <item name="borderWidth">@dimen/design_fab_border_width</item>
</style>

我可以为我的 View 重用这个名称还是必须重命名它?

编辑

这是整个 attrs.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!--<attr name="borderWidth" format="float" />-->

    <declare-styleable name="ScrollingLineGraph">
        <attr name="unitsX" format="float" />
        <attr name="unitsY" format="float" />

        <attr name="scaleY" format="float" />
        <attr name="scaleX" format="float" />

        <!--<attr name="borderWidth" format="float" />-->
        <attr name="scaleWidth" format="float" />

        <attr name="borderColor" format="color" />
        <attr name="scaleColor" format="color" />
        <attr name="lineColor" format="color" />
        <attr name="highlightColor" format="color" />
        <attr name="labelColor" format="color" />

        <attr name="labelSize" format="float" />
    </declare-styleable>
</resources>

这是使用我的自定义 View 的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout android:id="@+id/coordinatorLayout_main"
                                                 xmlns:android="http://schemas.android.com/apk/res/android"
                                                 xmlns:custom="http://schemas.android.com/apk/res-auto"
                                                 android:layout_width="match_parent"
                                                 android:layout_height="match_parent"
                                                 android:fitsSystemWindows="false">

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    android:orientation="vertical">

    <!-- Other views -->

    <com.tycho.app.simplegraphs.ui.ScrollingLineGraph
        android:id="@+id/graph1"
        custom:unitsX="10000"
        android:layout_width="200dp"
        android:layout_height="40dp"/>

    <com.tycho.app.simplegraphs.ui.ScrollingLineGraph
        android:id="@+id/graph2"
        android:layout_marginTop="4dp"
        custom:lineColor="#FF0000"
        custom:unitsX="10000"
        custom:highlightColor="#80FF0000"
        android:layout_width="200dp"
        android:layout_height="40dp"/>

    <!-- Other views -->

</LinearLayout>

最佳答案

您可以重复使用该属性。这是一个例子

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="textSize" format="dimension"/>

    <declare-styleable name="View1">
        <attr name="textSize"/>
    </declare-styleable>

    <declare-styleable name="View2">
        <attr name="textSize"/>
    </declare-styleable>
</resources>

了解更多信息 https://developer.android.com/training/custom-views/create-view.html#customattr

关于java - Android 属性已经定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42287633/

相关文章:

Android 优点和缺点 : Event Bus and RxJava

java - 无法从代码执行 ANT

java - java中带有字符串的sql语法

java - 使用带有字符串和单独类的 Map 对集合进行排序

java - 如何创建 Bottomnavigationview Android 的自定义项?

android - 在向上滑动android时显示其他 View

android - MonoDroid : Error when calling constructor of custom view - TwoDScrollView

Java JPanel 鼠标监听器对其组件不起作用

java - Android 应用程序中 key 的反黑客解决方案?

android - 如何将 Android 应用程序与 Google 表格电子表格相关联?