2017-02-16 3 views
0
<TextView 
    android:id="@+id/label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@+id/label" 
    android:textSize="20px" > 
</TextView> 

Dies ist Teilcode von ListActivity mit benutzerdefinierten Layout. So kann es Wert dynamisch einstellen. Warum Android: text = "@ + ID/Label"? Haben Sie eine andere Verwendung?Android: Warum TextView Textattribut Wert ID ist?

Antwort

0
<TextView 
    android:id="@+id/label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@+id/label" <-- wrong 
    android:text="@string/label" <-- get text from string.xml 
    android:text="Label"  <-- direct text 
    android:textSize="20px" > 
</TextView> 
0

Stimmen Sie mit ZeroOnes Antwort überein. Hinzufügen zu ihm gesagt Sie sich dynamisch ändernden Wert von Textview Innerhalb Aktivitätsklasse

TextView tv = (TextView) findViewById(R.id.label); 

Die ID Sie in der Sie Layout, sind Sie hier mit, um es zu verweisen. Sie verwenden R.id.label weil Android ein

Auto R.class

Dateien erzeugt hat, die für alle Objekte, String Referenzen, Vermögenswerte, Layouts, Farben, Stile und IDs einen einzigartigen Hex-Code hat (die meisten von ihnen sind endgültig statisch) etc. So können Sie

R.id.label (es ist eine Ressource-ID vom Typ int)

erzählen

Zum R-Klasse -> Id -> Variablenname

Um den Wert Ihrer Textview

tv.setText("Hello World"); 

Wenn in Ihrem Layout-Datei festgelegt, wenn Sie verwenden

android:text="@+id/label" 

Es ist einfach das bringt Wert des Textes, der auf textview als @+id/label gesetzt wird. Das macht eigentlich keinen Sinn, es sei denn, Sie @+id/label angezeigt werden soll ..

Wenn Ihr Plan ist es, den Wert der Textview als Etikett in Ihrem Layout selbst festlegen Datei dann als ZeroOne sagte verwenden entweder

android:text="label" 

Oder

android:text="@string/my_label" // for this to work you need to add reference in strings.xml inside your res folder