2011-12-24 11 views
0

特定のレイアウト内に子供ViewをスタイルするCSSがあるかどうかを知りたいと思います。例えばAndroid:レイアウト内の特定のビュータイプにスタイルを指定

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="5dp"> 

    <LinearLayout 
     android:id="@+id/fieldGroup1" 
     style="@style/field_group" 
     android:background="@drawable/rounded_border" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_marginBottom="10dp" > 

     <TextView 
      android:id="@+id/itemName" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 
     <TextView 
      android:id="@+id/itemExpiry" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <!-- More TextViews !> 
    </LinearLayout> 

    <!-- Another LinearLayout !> 
</LinearLayout> 

とスタイル

<style name="field_group"> 
    <item name="android:textViewStyle">@style/padded_text_view</item> 
</style> 

<style name="padded_text_view"> 
    <item name="android:padding">5dp</item> 
</style> 

しかし、field_groupスタイルを持っているLinearLayoutTextView sが、5DPパディングを継承しません。

私はすべてTextViewにスタイルを適用できますが、これを実現するにはより良い方法がありますか?

答えて

1

あなたのスタイルは子供には適用されないようです。説明は次のとおりです。異なるビューは同じ属性を持ち、互いにネストすることができます。したがって、親ビューと子ビューに同じパラメータがあり、スタイルがオーバーロードされている場合は、ロジックに従って、親ビューと子ビューに適用されます。あなたが子供のために他の価値を望むなら、別のスタイルを作るべきです。それは非常に消費しているようです。

テーマを使用して問題を解決できると思います。テーマはアクティビティのすべての要素に適用されます。したがって、これはあなたを助けることができます。

+0

私はテーマを使用することを考えましたが、スタイルを一部の 'TextView'のみに適用し、' Activity'のすべてではないようにしたいと思います。テーマはこれを行うことができますか? – dezull

+0

いいえ、アクティビティのすべてのコンポーネントに適用されます。 – Yury