Soru kodlanmış dize “satır üç”, @string kaynağını kullanmalı


Ben yeni başlayan bir android geliştiricisiyim, bu Doğrusal Düzenini tutulmaya çalışıyorum:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <LinearLayout
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="1">
      <TextView
          android:text="red"
          android:gravity="center_horizontal"
          android:background="#aa0000"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="green"
          android:gravity="center_horizontal"
          android:background="#00aa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="blue"
          android:gravity="center_horizontal"
          android:background="#0000aa"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="yellow"
          android:gravity="center_horizontal"
          android:background="#aaaa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
  </LinearLayout>

  <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:text="row one"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row two"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row three"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row four"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
  </LinearLayout>

</LinearLayout>

Ve fark ettim:
1) sarı çizgi altında android:text="Yellow"
2) sarı çizgi altında android:text="row four"
Üçgen uyarır diyor [I18N] Hardcoded string "Yellow", should use @string resource " ve uyarıların geri kalanı için de aynısı var. Bir öneri?


44
2018-01-05 13:30


Menşei




Cevaplar:


Yerleşim dosyalarınıza sabit kod dizeleri için iyi bir uygulama değildir. Bunları bir dize kaynak dosyasına eklemeli ve sonra bunları düzeninizden göndermelisiniz.

Bu, strings.xml dosyanızın düzenlenmesiyle tüm düzenlerde "Sarı" kelimesinin her oluşumunu aynı anda güncellemenize olanak tanır.

Ayrıca, her bir desteklenen dil için ayrı bir strings.xml dosyası olarak birden çok dili desteklemede son derece kullanışlıdır.

örnek: XML dosyası res / values ​​/ strings.xml dosyasında kaydedildi:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="yellow">Yellow</string>
</resources>

Bu düzen XML, bir Görünüm'e bir dize uygular:

<TextView android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/yellow" />

Benzer şekilde renkler, colors.xml dosyasında saklanmalı ve ardından @ color / color_name kullanılarak referans alınmalıdır.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="Black">#000000</color>
</resources>

103
2018-01-05 14:11



(kapsam dışı) da, bir şekilde bir tabloya benziyor. bir masa başı olabilir daha uygun olurdu. üstelik, pt olarak textsize cesaretini kırdı. sp daha esnektir. - njzk2
Kuffs: teşekkürler, bu yardımcı oldu
Neden @string / ... ve @strings / ... değil? - Con Antonakos
Tek bir dizgeye başvuruyorsunuz. Neden çoğul olur? - Kuffs
@Kuffs: Uygulama tek dilli ise ve "Lütfen 100'den küçük bir değer girin" gibi küçük Tütünler gösterilmeli, yine de Dize Kaynağı metodoloji? - Shishir Gupta


Onları altında oluşturmanız gerekir strings.xml

<string name="close">Close</string>    

Bu şekilde değiştirmeli ve referans almalısınız

android:text="@string/close"/>

XML dosyası strings.xml yazıyorsa ya da çalışmazsa bile @ dizeleri kullanmayın.


10
2018-04-24 18:31



harika açıkladı - iWizard
@CroiOS Harika İngilizce - Henry Harris


Yerleşim dosyalarınıza / kodunuza sabit kod dizelerini uygulamak iyi bir uygulama değildir. Bunları bir dize kaynak dosyasına eklemeli ve sonra bunları düzeninizden göndermelisiniz.

  1. Bu, aynı kelimenin her oluşumunu tümüyle güncellemenize olanak tanır
    sadece düzenleyerek düzenleri aynı anda strings.xml dosya.
  2. Ayrıca için son derece yararlıdır supporting multiple languages olarak ayrı strings.xml file desteklenen her dil için kullanılabilir
  3. sahip olma gerçek noktası @string sistem üzerinden okuyun lütfen yerelleştirme dokümantasyon. İçerideki metni kolayca bulmanızı sağlar uygulamanız ve daha sonra tercüme ettik.
  4. Dizeler uygulamanıza izin vererek kolayca uluslararası hale getirilebilir için support multiple languages with a single application package file (APK).

Yararları

  • Kodda 10 farklı konumda aynı diziyi kullandığınızı söyleriz. Ya değiştirmeye karar verirseniz? Tüm bunların yerini aramak yerine projede kullanıldı, sadece bir kez değiştirdiniz ve değişiklikler projenin her yerinde yansıdı.
  • Dizeler, uygulama kodunuzu dağıtmadığından açık ve    bakımı kolay.

8
2017-07-15 06:41



En iyi cevap en altta .... - Blubber


Tasarım moduna gidip uyarının en altındaki "Düzelt" i seçebilirsiniz. Sonra bir pop up (yeni dizeyi kaydedecek gibi görünüyor) ve voila görünecektir, hata düzeltildi.


1
2017-12-31 15:30





İyi bir uygulama, String.xml içinde metin yazmaktır

örnek:

String.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="yellow">Yellow</string>
</resources>

ve iç düzeni:

<TextView android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/yellow" />

0
2018-04-09 09:15