SORU
22 Temmuz 2011, Cuma


Kod TextView yazı tipi boyutunu ayarlarken tutarsızlık ve kaynaklar

official documentation bu cevap vermiyor, ya da bunu çözemiyorum.

Eleman (nevermind AlertDialog herhangi bir TextView de olur):

TextView tv = (TextView) dialog.findViewById(android.R.id.message);

Tutarsızlık. Dava:

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same

Durum B:

tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.

values/dimens.xml nereye vardır:

<dimen name="text_size_small">14sp</dimen>

Sonuç: yazı tipi boyutu aynı değildir, ve kaynaktan alınırken çok daha büyük görünür. Muhtemelen bir şey benim hatam, ve en önemli kaçırıyorum: neden?

--İLK CEVAP İÇİN GÜNCELLEME--

Sabit numara kimse sabit kodu sabit yazı tipi boyutlarını kod gibi sadece bir örnektir. Yani başka bir şekilde sorayım:

Neden kod kaynak alırsam, boyut XML düzeninden kaynak geldiğimde daha büyük metin?Ayrıca, bu soru hala aynı: nasıl kod 14sp bir birim almak ve düzeni XML ayarlanır 14sp birimi ile sürekli ne yapabilirim? Metin boyutu için kod kaynaktan sp birimlerin nasıl kullanılacağını bana değil çünkü cevabı kabul etmedi.

Bu düzeni, yazı tipi boyutu boyut aynıysa bile farklıdır:

<TextView
            android:id="@ id/my_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/TextBody" />

styles.xml:

<style name="TextBody">
    <item name="android:textSize">@dimen/text_size_small</item>
    <item name="android:lineSpacingMultiplier">1.1</item>
    <item name="android:textColor">@color/body_text_1</item>
    <item name="android:textIsSelectable">true</item>
    <item name="android:linksClickable">true</item>
</style>

Text_size_small görüyor musun? Neden bu durumda yazı tipi boyutunu kodu daha küçüktür, dimen aynı kaynakla?

CEVAP
13 AĞUSTOS 2011, CUMARTESİ


getDimension yöntemi belgelerine önceden hesaplanmış mutlak px değeri olarak anlıyorum ki Resource dimension value multiplied by the appropriate metric. bir döndüren Birleşik Devletleri setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize); kullanmalısınız.

Bu, kullanımı:

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_size_small));

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • ELawshea

    ELawshea

    26 Mayıs 2008
  • schmittastic

    schmittastic

    9 EYLÜL 2009