IT

Android : 선택기에서 된 된 버튼의 textColor가 표시되지 않습니까?

lottoking 2020. 9. 15. 08:00
반응형

Android : 선택기에서 된 된 버튼의 textColor가 표시되지 않습니까?


선택기로 버튼을 만들려고합니다. 내 버튼의 상태는 다음과 달라집니다.

  • 활성화 / 활성화
  • 누름 / 눌리지 발생

언급 된 한 상태에 따르면. 버튼을 조작해야합니다.

  • 텍스트 색상
  • 배경 이미지

버튼은 중단 된 상태에서 시작 버튼으로 시작된 텍스트 색상 및 중단 된 버튼 배경이됩니다. 하지만 기본 textColor (스타일로 지정됨)와 배경 이미지 없음을 볼 수 있습니다!

여기 내 선택기 button_selector.xml이 있습니다.

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

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false"
        android:state_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button" />    

    <item android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@drawable/button_pressed"/>

    <item android:state_pressed="true"
        android:state_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button"/>

    <item android:state_pressed="false"
        android:state_enabled="true"
        android:drawable="@drawable/button"/>    

</selector>

그리고 여기 내 layout.xml의 버튼이 있습니다.

    <Button android:id="@+id/reserve_button"
        android:text="@string/reserve_button"
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:paddingRight="15dp"
        android:layout_gravity="left"
        style="@style/buttonStyle"
        android:background="@drawable/button_selector" />

그리고 마지막으로 이것은 내 스타일입니다 (내 기본 textColor가 설치된 곳)

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

 <resources>

     <style name="buttonStyle">
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">#282780</item>
      <item name="android:textSize">18sp</item>
     </style>

</resources>

도와주세요!


ColorStateList다른 상태를 이미지하는 텍스트 색상을 위해 등급을 지정합니다 .

다음을 수행하십시오.

  1. res\color같은 이름의 다른 XML 파일을 만듭니다 text_color.xml.

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <!-- disabled state -->
      <item android:state_enabled="false" android:color="#9D9FA2" /> 
      <item android:color="#000"/>
    </selector>
    
  2. 에서 다음과 같이 style.xml해당 text_color.xml파일 에 대한 참조를 입력하십시오 .

    <style name="buttonStyle" parent="@android:style/Widget.Button">
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">@color/text_color</item>
      <item name="android:textSize">18sp</item>
    </style>
    

문제가 해결 될 것입니다.


1. / res / 폴더에 색상 폴더를 만들고 xml에 색상 폴더를 만듭니다.

text_color_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <!-- disabled state --> 
<item android:state_enabled="false" android:color="#776678" /> 
 <item android:color="#ffffff"/>
</selector>

2. 이제 xml 레이아웃을 만듭니다.

 <Button

        android:id="@+id/button_search"

        android:layout_width="652dp"

        android:layout_height="48dp"

        android:layout_alignParentLeft="true"

        android:layout_alignParentTop="true"

        android:layout_marginTop="18dp"

        android:background="@android:color/transparent"

        android:text="Hello Bhaskar"

        android:textColor="@color/text_color_selector"/>  

가장 쉬운 해결책은 여기에서 본 것처럼 컬러 필터를의 배경 이미지와 버튼으로 설정하는 것입니다 .

다음과 같이 할 수 있습니다.

if ('need to set button disable')
    button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
else
    button.getBackground().setColorFilter(null);

내가 누군가를 도왔 으면 좋겠다 ...


<Button android:id="@+id/reserve_button"
        android:text="@string/reserve_button"
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:paddingRight="15dp"
        android:layout_gravity="left"
        style="@style/buttonStyle"
        android:background="@drawable/button_selector" />

레이아웃 xml에서 버튼을 볼 수 없습니다. 이것을 버튼 레이아웃에 추가하십시오.

android:enabled="false"

버튼 레이아웃은

<Button android:id="@+id/reserve_button"
        android:text="@string/reserve_button"
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:enabled="false"
        android:paddingRight="15dp"
        android:layout_gravity="left"
        style="@style/buttonStyle"
        android:background="@drawable/button_selector" />

색상 목록을 만들 수 있습니다.

파일 위치 :

res/color/filename.xml

파일 이름은 리소스 ID로 사용됩니다.

리소스 참조 :

자바 : R.color.filename

XML에서 : @[package:]color/filename

통사론:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:color="hex_color"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>

예:

다음에 저장된 XML 파일 res/color/button_text.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#ffff0000"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff0000ff"/> <!-- focused -->
    <item android:color="#ff000000"/> <!-- default -->
</selector>

이 레이아웃 XML은 뷰에 색상 목록을 적용합니다.

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:textColor="@color/button_text" />

참조 : 색상 목록 참조

참고 URL : https://stackoverflow.com/questions/11225166/android-textcolor-of-disabled-button-in-selector-not-showing

반응형