안드로이드 사용자 정의 버튼; 텍스트 색상 변경 상태에서 배경 드로어 블을

다음과 같이 다른 상태에서 배경 드로어 블을 변경하는 버튼을 만들었습니다.

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true" android:drawable="@drawable/btn_location_pressed" /> <!-- pressed -->
 <item android:state_focused="true" android:drawable="@drawable/btn_location_pressed"/> <!-- focused -->
 <item android:drawable="@drawable/btn_location"/> <!-- default -->

여기서 문제는 드로어 블과 마찬가지로 textColor를 변경하려고하지만 할 수 없다는 것입니다. 이미 android : textColor 및 android : color를 시도했지만 초가 내 배경을 변경하는 동안 첫 번째 기능이 작동하지 않습니다.

다음 코드는 내 레이아웃의 일부입니다. 텍스트 색상과 관련하여 일반 상태 텍스트 색상에서만 작동하므로 눌렀을 때 흰색으로 변경되지 않습니다.

<Button android:id="@+id/location_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:background="@drawable/location"
        android:textSize="15sp"
        android:textColor="@color/location_color"
        android:textColorHighlight="#FFFFFF"
   />

아무도 단서가 있습니까?



답변

예를 들어 배경과 같이 버튼의 상태 저장 색상을 만듭니다.

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

    <!-- Focused and not pressed -->
    <item android:state_focused="true"
          android:state_pressed="false"
          android:color="#ffffff" />

    <!-- Focused and pressed -->
    <item android:state_focused="true"
          android:state_pressed="true"
          android:color="#000000" />

    <!-- Unfocused and pressed -->
    <item android:state_focused="false"
          android:state_pressed="true"
          android:color="#000000" />

    <!-- Default color -->
    <item android:color="#ffffff" />

</selector>

xml을 res / drawable 폴더 (예 : res / drawable / button_text_color.xml)의 파일에 저장하십시오. 그런 다음 드로어 블을 텍스트 색상으로 설정하십시오.

android:textColor="@drawable/button_text_color"

답변

그것을하는 또 다른 방법은 수업 시간입니다.

import android.graphics.Color; // add to top of class  

Button btn = (Button)findViewById(R.id.btn);

// set button text colour to be blue
btn.setTextColor(Color.parseColor("blue"));

// set button text colour to be red
btn.setTextColor(Color.parseColor("#FF0000"));

// set button text color to be a color from your resources (could be strings.xml)
btn.setTextColor(getResources().getColor(R.color.yourColor));

// set button background colour to be green
btn.setBackgroundColor(Color.GREEN);

답변

확인은 매우 간단합니다. 먼저 1. res-valuse로 이동하여 colors.xml을 엽니 다. 2. 예를 들어 # FF4081과 같이 정의 된 텍스트의 1을 복사하고 이름을 변경합니다. 이와 같은 흰색 값

<color name="White">#FFFFFF</color>

그런 다음 버튼 안에이 줄을 추가하십시오.

 b3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.White));

확인 b3은 내 버튼의 이름이므로 ur 버튼의 이름이 변경되었습니다. 다른 색상을 변경 한 다음 흰색을 색상 이름으로 변경하면 흰색을 사용하지만 다른 색상은 색상으로 정의하면 다른 모든 색상은 동일합니다. 내가 퐁 2에서 설명한 것처럼 XML


답변

버튼의 텍스트 색상 변경

이 방법은 더 이상 사용되지 않기 때문에

button.setTextColor(getResources().getColor(R.color.your_color));

나는 다음을 사용한다 :

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));

답변

사용하다 getColorStateList 이 같은

setTextColor(resources.getColorStateList(R.color.button_states_color))

대신에 getColor

setTextColor(resources.getColor(R.color.button_states_color))