2017-02-17 3 views
3

Ich versuche, eine benutzerdefinierte Ansicht mit einem Attribut mit dem Namen borderWidth zu machen. Wenn ich versuche, meine App zu laufen bekomme ich den Fehler:Android-Attribut wurde bereits definiert

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

In der values.xml-Datei, die er zeigt, kann ich sehen, dass borderWidth bereits FloatingActionButton für den Standard verwendet wird, und ein paar anderen Standard-Android-Widgets:

<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> 

Kann ich diesen Namen für meine Ansicht wiederverwenden oder muss ich ihn umbenennen?

bearbeiten

Dies ist die gesamte attrs.xml Datei:

<?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> 

Dies ist die Layout-Datei, in meiner benutzerdefinierten Ansicht verwendet wird:

<?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> 

Antwort

0

Als Antwort in this question Staaten, die einzige Möglichkeit, einen bestimmten Namen zu verwenden, die bereits von Android verwendet wurde, ist es wieder zu verwenden. Dies ist jedoch in dieser Situation nicht geeignet, da meine Attribute eine andere Bedeutung haben als die Standard Android, also muss ich nur meine umbenennen.

So werde ich umbenennen borderWidth zu graphBorderWidth.

0

Sie kann die att wiederverwenden Rippe. Dies ist ein Beispiel

<?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> 

Für weitere Informationen https://developer.android.com/training/custom-views/create-view.html#customattr

+0

Ich habe versucht, aber es gibt den folgenden Fehler: Fehler: gefunden Artikel Attr/borderWidth mehr als einmal – TychoTheTaco

+0

Sie können einen benutzerdefinierten Namespace verwenden. Hier klicken https://developer.android.com/training/custom-views/create-view.html#customattr. Haben Sie Ihre benutzerdefinierten Attribute in eine Datei namens attrs.xml aufgenommen? – Flood2d

+0

Ich habe bereits den Namensraum wie folgt eingerichtet: 'xmlns: custom =" http://schemas.android.com/apk/res-auto "' aber der Fehler ist immer noch da. – TychoTheTaco

Verwandte Themen