programing

Android: textSelector에서 비활성화된 버튼의 색상이 표시되지 않습니까?

css3 2023. 9. 12. 20:09

Android: textSelector에서 비활성화된 버튼의 색상이 표시되지 않습니까?

선택기가 있는 버튼을 내 버튼에 다음과 같은 상태로 만들려고 합니다.

  • 사용/사용 안 함
  • 누름/누르지 않음

위에 언급된 주에 따라.버튼을 조작해야 합니다.

  • 문자색상
  • 배경 이미지

버튼은 비활성화 상태로 시작되므로 비활성화된 textColor와 비활성화된 버튼 배경이 있어야 합니다.하지만 기본 텍스트Color(스타일로 지정)와 NO 배경 이미지가 보입니다!

여기 내 selector 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>

그리고 여기 my 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" />

마지막으로 내 스타일(기본 텍스트Color가 설정된 경우)

<?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>

도와주세요!

또한 서로 다른 상태를 식별하는 텍스트 색에 대한 를 작성해야 합니다.

다음을 수행합니다.

  1. 에 다른 XML 파일을(를)res\color이런 이름을 지었습니다.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_graphics.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);

내가 누군가를 도와줬기를...

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

파일 위치:

res/color/filename.xml

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

리소스 참조:

Java의 경우: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" />

참조 : 색상 리스트 참조

<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" />

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