2013-08-08 22 views
5

Uygulamam için tüm Stillerimi bir Temaya yerleştirmeye çalışıyorum. Ancak, bir TextView'da textColor'u değiştirirken sorun yaşıyorum. Bu benim attrs.xml dosyamdan.Android TextView metni değiştirYazdır Tema

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

<declare-styleable name="flat"> 
    <attr name="detail_name_view" format="reference" /> 

</declare-styleable> 
Bu benim styles.xml dan

dosya

<style name="flat_theme" parent="android:Theme.NoTitleBar"> 
    <item name="detail_name_view">@style/flat_detail_name</item> 
</style> 
<style name="flat_detail_name" parent="@android:style/Widget.TextView"> 
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> 
    <item name="android:textColor">@color/detail_group_black</item> 
    <item name="android:textSize">16sp</item> 
    <item name="android:singleLine">true</item> 
    <item name="android:ellipsize">end</item> 
</style> 

Ve bu benim Layout.xml dosya dan

Ayrıca, aşağıdakilerle birlikte doğru bir şekilde ayarlanmış bir tane de hazırlamam var.
<application 
    android:name="com.example.blah" 
    android:icon="@drawable/blah" 
    android:label="@string/app_name" 
    android:theme="@style/flat_theme" 

Renk asla "@ color/detail_group_black" olarak değiştirilir. Basit bir şey mi eksik? Ya da Android'in TextView için zaten bir textColor özniteliği yaratması sorunudur ve bu yüzden stil bu özelliği geçersiz kılmaz mı? Öznitelik teması stratejim uygulamanın geri kalanı için iyi çalışıyor gibi görünüyor, ancak bu değil. Herhangi bir fikir? Şimdiden teşekkürler.

Ayrıca, eğer bu değişiklik için özel bir TextView sınıfı oluşturmamayı tercih edersem de: Oldukça büyük bir proje ve TextView için genişletirseniz ne tür sorunlar yaşadığımdan emin değilim. herşey. Ben style = "@ stil/flat_detail_name_view" olması TextView değiştirirseniz

Düzenleme Ayrıca, iyi çalışıyor. Bunu yapmak istemememin sebebi, temayı değiştirerek sadece bu metin görüntülerinin görünümünü değiştirebileceğim. Style = "? Something_else", diğer tüm görünümlerimde çalışır, bu yüzden gerçekten bunu anlamıyorum ve muhtemelen basit bir şeyi mi özlüyorum?

+0

TextView stilinde "? Detail_name_view" nedir? –

+0

style = "? Detay_name_view", detail_name_view özelliğine bir referanstır. –

cevap

2

Sorunumu, herhangi birinin benzer bir duruma düşmesi durumunda buldum! Temel olarak, bunun çalışmadığı sebep şu ki, aşağıdaki kodu kullanarak görünümü şişiriyordum.

private View buildGroupView(ExpandListGroup group) { 
    LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
    View view; 
    switch(group.getType()){ 
     case ExpandListGroup.HEADER : 
      view = inf.inflate(R.layout.three_col_header, null); 
      break; 
     default: 
      view = inf.inflate(R.layout.detail_expandablelist_group_item, null); 
      break; 

    } 

    return view; 
} 

Ve Bağdaştırıcımın getGroupView'unda, onu iade ediyordum. Theme/Style is not applied when inflater used with ApplicationContext:

public View getGroupView(int groupPosition, boolean isLastChild, View convertView, 
     ViewGroup parent) { 
    View view = convertView; 
    ExpandListGroup group = (ExpandListGroup) getGroup(groupPosition); 

    view = buildGroupView(group); 

    setGroupViewData(group, view); 

    return view; 
} 

Anlaşılan benim sorunum bu yazının altındaki CommonsWare önerdiği gibi ben ..

LayoutInflater inf = mActivity.getLayoutInflater(); 

ile

inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 

LayoutInflater

yerine ihtiyaç vardı.

Yardımlarınız için teşekkürler.