source

Android Button 배경색이 변하지 않음

ittop 2023. 10. 4. 22:57
반응형

Android Button 배경색이 변하지 않음

이 안드로이드 프로젝트에서 기본 버튼 스타일을 만듭니다. my styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:buttonStyle">@style/ButtonStlye123</item>
</style>

<style name="ButtonStlye123" parent="android:style/Widget.Button">
    <item name="android:textSize">19dp</item>
    <item name="android:layout_margin">8dp</item>
    <item name="android:padding">8dp</item>
    <item name="android:textColor">@color/ColorDivider</item>

    <item name="android:background">@color/ColorAccent</item>
</style>

내 단추가 조각난 거지

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/btnLogin"
    android:id="@+id/btn_login"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:theme="@style/ButtonStlye123"
    android:onClick="login" />

안드로이드 스튜디오의 미리보기에서는 내가 원하는 것처럼 보이지만 장치에서 앱을 실행하면 배경색이 회색("기본 버튼 색")으로 표시됩니다.styles.xml에서 텍스트 색상을 변경하면 다음과 같습니다.

<item name="android:textColor">@color/ColorPrimary</item>

사용자 지정 스타일이 로드되고 있으므로 버튼에 대해 다른 색상(텍스트에 대해 작동하는)을 시도했지만 변경되지 않습니다.

내 배경색이 로딩되지 않는 이유는 무엇입니까?

대신 AppCompactButton을 사용해 보십시오.

<Button>

사용하다

<androidx.appcompat.widget.AppCompatButton>

그것이 효과가 있을 것입니다.

업데이트: 01/06/2021

위의 내용이 이전 안드로이드 버전에서는 작동하지 않는다는 것을 알게 되었습니다.소재 디자인용 버튼 사용

<Button app:backgroundTint="@color/green">

Androidx.appcompat를 사용해 주시기 바랍니다.위젯.Button 대신 AppCompat Button.

  <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/button_id_Login"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/textInnputLayout_editText_id_password"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="@string/Login_screen_button_text"
        android:background="@drawable/login_button_style"
        android:textAllCaps="false">
    </androidx.appcompat.widget.AppCompatButton>

사용하고 있을 수도 있습니다.targetSdkVersion 30소재테마

해결책은 변화입니다.theme.xml스타일.

부터

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">

로.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">

대체 대상

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

재료 구성요소를 AppCompat으로 변경하는 것이 좋습니다.

저는 당신의 속성을 '테마'에서 '스타일'로 바꿔야 한다고 생각합니다.이 파일들은 서로 다른 용도로 사용되기 때문에 서로 다르게 사용됩니다.

Style은 개별 뷰 또는 구성요소에 속성을 할당하는 데 사용되며, Theme은 전체 앱에 속성을 적용하는 데 사용됩니다.

그래서 대신에 이것을 시도해보세요.

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/btnLogin"
    android:id="@+id/btn_login"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    <!-- This attribute was changed -->        
    android:style="@style/ButtonStlye123"
    android:onClick="login" />

또한 이러한 다양한 유형의 XML을 적절한 파일(styles.xml 및 mes.xml - 모두 동일한 파일에 유지하는 대신)로 분할해야 합니다.이것은 관례이며 코드 컴파일이나 실행에는 영향을 주지 않지만 코드 스타일로 권장됩니다.

이 특성 사용backgroundTint도움이 될 겁니다저한테는 효과가 있어요.예:

android:backgroundTint="@color/md_orange_800"

Android Studio Version 4.1 이상(Beta)을 사용하는 경우, temes.xml 파일을 값으로 확인합니다.

<style name="Theme.NavaFlashLightV4" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
</style>

속성을 @로 변경합니다.

<style name="Theme.NavaFlashLightV4" parent="Theme.MaterialComponents.DayNight.NoActionBar">
            <!-- Primary brand color. -->
            <item name="colorPrimary">@null</item> <!-- HERE -->
            <item name="colorPrimaryVariant">@color/purple_700</item>
            <item name="colorOnPrimary">@color/white</item>
    </style>

Android Studio의 다른 오래된 버전의 경우

이 속성을 변경하기만 하면 됩니다.

<item name="colorPrimary">@color/colorPrimary</item>

로.

        <item name="colorPrimary">@color/@null</item>

마지막으로 버튼의 배경을 원하는 그리기 가능 아이콘으로 설정합니다.예:

<Button
        android:id="@+id/btnSwitch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/ic_launcher_background" /> <!--the drawable you want-->

앱 테마를 다음에서 변경하기만 하면 됩니다.Theme.MaterialComponents.DayNight.DarkActionBar로.Theme.AppCompat.Light.NoActionBarinside style.xml 파일

예제:

출처:style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"

받는 사람:style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"

당신의 스타일은 이렇게 되어야 합니다..

<style name="ButtonStlye123" >
    <item name="android:textSize">19dp</item>
    <item name="android:layout_margin">8dp</item>
    <item name="android:padding">8dp</item>
    <item name="android:textColor">@color/ColorDivider</item>

    <item name="android:background">@color/ColorAccent</item>
</style>

그리고 레이아웃에서.

<Button
     android:id="@+id/btn3"
     style="@style/ButtonStlye123"
     android:layout_width="@dimen/sixzero"
     android:layout_height="@dimen/sixzero"
     android:text="3" />

저는 targetSdk 30과 completeSdk 32를 사용하고 있고 Button widget을 사용하고 있습니다.안드로이드 스튜디오 버전 2021.1.1

제 경우엔, 변화가 효과가 있었고,

Android Manifest.xml에서 "application" 태그 아래에서 "android:theme"을 변경합니다.

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

로.

android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"

테마로 옮겼습니다.앱 컴뱃.Light.No ActionBar 제목 표시줄을 제거합니다.처음에는 '스타일'을 '테마'로 바꾸려고 했습니다.앱 컴뱃.temes.xml 안에 있는 "Light.No ActionBar"이지만 저에게는 효과가 없었습니다.

배경 변경 내용:

<Button android:background="@color/black">

이 선으로 >>

<Button android:backgroundTint="@color/black">

언급URL : https://stackoverflow.com/questions/31858374/android-button-background-color-not-changing

반응형