2014-01-29 2 views
0

에 중첩 된 뷰에 스타일을 적용하는 방법 : "custom_drawable"을 누르면, 선택 등 서로 다른 상태 (의 선택임을이 같은 몇 가지 부분은 XML 레이아웃 파일을 사용하여 안드로이드

<RelativeLayout 
    android:layout_width="0px" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:id="@+id/relativeLayout" 
    android:background="@drawable/custom_drawable" > 

    <TextView 
     android:text="Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView" 
     android:layout_centerVertical="false" 
     android:layout_centerInParent="true" /> 

    <ImageView 
     android:src="@drawable/image" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:id="@+id/imageView11" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" /> 
</RelativeLayout> 

그리고 consideting), "custom_drawable"을 사용하여 중첩 된 요소에 스타일을 적용 할 수 있는지 궁금합니다. 예를 들어, RelativeLayout의 상태에 따라 TextView의 색상을 변경하면 ...

아이디어가 있으십니까?


편집 : 내 대답을 확인, 바로 XML 파일과 함께 그 일을하는 방법을 발견했다.

답변

2

마침내 XML 파일에서만 작동하도록하는 해결 방법을 발견했습니다. 중첩 된 하위보기에서 android:duplicateParentState="true" 절을 사용하므로 상태는 부모보기에서 상속됩니다.

또한 텍스트 색상/유형 등을 제어하기위한 새로운 선택 도구를 만들 필요가 있습니다. 그러나 그 방법은 매우 간단합니다. 초기 코드를 사용하여

한 예 :

<RelativeLayout 
    android:layout_width="0px" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:id="@+id/relativeLayout" 
    android:background="@drawable/custom_drawable" > 

    <TextView 
     android:text="Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView" 
     android:layout_centerVertical="false" 
     android:layout_centerInParent="true" 
     android:textColor="@drawable/custom_drawable_text" 
     android:duplicateParentState="true" /> 

    <ImageView 
     android:src="@drawable/image" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:id="@+id/imageView11" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" /> 
</RelativeLayout> 
0
// try this way 
1.activity_main.xml 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical"> 

    <RadioGroup 
     android:id="@+id/rdg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="1dp" 
     android:layout_marginTop="1dp" 
     android:orientation="horizontal" > 

     <RadioButton 
      android:id="@+id/rdbOne" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/radio_selector_background" 
      android:button="@null" 
      android:checked="true" 
      android:padding="2dp" 
      android:gravity="center" 
      android:drawableBottom="@drawable/ic_launcher" 
      android:text="One" 
      android:textColor="@drawable/radio_selector_color" /> 
     <RadioButton 
      android:id="@+id/rdbTwo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/radio_selector_background" 
      android:button="@null" 
      android:padding="2dp" 
      android:gravity="center" 
      android:drawableBottom="@drawable/ic_launcher" 
      android:text="Two" 
      android:textColor="@drawable/radio_selector_color" /> 
     <RadioButton 
      android:id="@+id/rdbThree" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/radio_selector_background" 
      android:button="@null" 
      android:padding="2dp" 
      android:gravity="center" 
      android:drawableBottom="@drawable/ic_launcher" 
      android:text="Three" 
      android:textColor="@drawable/radio_selector_color" /> 
    </RadioGroup> 
</LinearLayout> 

2. under drawable folder define below two xml file.(for color and background selector) 
a.radio_selector_background.xml 
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@color/orange" android:state_checked="true"></item> 
    <item android:drawable="@color/white"></item> 

</selector> 
b.radio_selector_color.xml 
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:color="@color/white" android:state_checked="true"></item> 
    <item android:color="@color/orange" ></item> 

</selector> 

3. under values folder define colors.xml 
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="orange">#f04e23</color> 
    <color name="white">#ffffff</color> 
</resources> 
+0

아이디어는 좋지만, 문제는 내 경우에는 내가 중첩 된 요소의 스타일을 수정하려는 당신은 단지 두 개의 서로 다른 재산이를 수정하는 것입니다 같은 요소. – apascual

0
btn1.setOnTouchListener(new OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
if(event.getAction() == MotionEvent.ACTION_DOWN) { 
btn2.setTextColor(Color.parseColor("#ad321a")); 
} else if (event.getAction() == MotionEvent.ACTION_UP) { 
btn2.setTextColor(Color.parseColor("#Fad213")); 
} 
return false; 
} 
}); 

그때는 btn2 의 색상을 변경합니다 버튼을 누르고 난 후 떼면 다시 색상을 변경할 때 내가 두 버튼 이 코드를 작성했습니다.

+0

색상 변경, 텍스트 모양 변경 및 다른보기 숨기기와 같은 작업을 할 수 있습니다. 네가하고 싶은 모든 일. – user2323471

+0

그래, 이건 내가 이미 알고있는 방법이지만 코드없이 XML 파일을 사용하고 싶다. 고마워. – apascual

+0

opps .. !! 글쎄, XML을 사용하는 방법에 대해 연구 할 것입니다. – user2323471

관련 문제