2011-12-24 2 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의는 5dp 패딩을 상속하지 않습니다.

내가 모든 TextView에 스타일을 적용 할 수 있다는 것을 알고 있지만, 이것을 달성하는 더 좋은 방법이 있습니까?

답변

1

귀하의 스타일이 아동에게 적용되지 않는 것으로 보입니다. 설명은 다음과 같습니다. 다른보기는 동일한 속성을 가지며 서로 중첩 될 수 있습니다. 따라서 상위 뷰와 하위 뷰가 동일한 매개 변수를 가지며 스타일이 너무 바뀌면 논리에 따라 상위 뷰와 하위 뷰에 적용됩니다. 다른 가치를 지니고 싶다면 다른 스타일을 만들어야합니다. 그것은 매우 소모적 인 것 같습니다.

테마를 사용하여 문제를 해결할 수 있다고 생각합니다. 테마는 활동의 모든 요소에 적용됩니다. 따라서 이것은 당신을 도울 수 있습니다.

+0

테마를 사용하는 것을 고려했지만, 일부 'TextView'에만 스타일을 적용하고 'Activity'에는 모두 적용하지 않을 것입니다. 테마로이 작업을 수행 할 수 있습니까? – dezull

+0

아니요, 활동의 모든 구성 요소에 적용됩니다. – Yury

관련 문제