Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- NestedScrollView
- 쉐어드
- location System
- 스크롤뷰 자식 뷰 높이 동적조절
- 뷰바인딩
- java
- 리사이클러뷰
- recyclerview
- 다이얼로그 크기조절
- 안드로이드
- 프로그래머스
- 레트로핏2
- DataBinding
- 레트로핏 MVVM
- ScrollView Child View Height Programmatically
- 다이얼로그 프래그먼트
- 데이터바인딩
- Retrofit with MVVM
- dialog resize
- Android
- Retrofit Kotlin
- lifecycleScope
- dialog fragment
- viewBinding
- 레트로핏 코틀린
- ScrollView with ConstraintLayout
- 위치정보확인
- 인텐트란?
- dialogfragment singleton
- programmers
Archives
- Today
- Total
안드로이드 세계
[Android] 버튼 백그라운드 변경문제 본문
최신 버전(Android Studio 4.1.2)으로 올라오면서 버튼 백그라운드로 색상을 변경하게 되면 변경되지 않는 문제점이 발견되었다.
이전까지의 적용방법으로 적용을 해본다. 라운드 처리를 하고 버튼의 색을 빨간색, 윤곽선을 흰색으로 해보겠다.
button_round.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="10dp"/>
<solid
android:color="@color/red"/>
<stroke
android:color="@color/white"
android:width="2dp"/>
</shape>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_round"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
이전에는 이렇게 사용하면 라운드된 버튼과 색이 변경된 것을 볼 수 있었다.
하지만 최신 버전으로 들어오게 되면 라운드 처리는 되었지만 색의 변경이 전혀 이루어지지 않은 것을 확인할 수 있다.
해결방법은 다음과 같다.
- backgroundTint = "@null" background = "@drawable/button_round"적용
- Button -> AppCompatButton으로 변경
- Theme에서 MaterialComponents -> AppCompat으로 변경
위와 같은 방법이 있다.
1번의 방법
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_round"
app:backgroundTint="@null"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
2번의 방법
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_round"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
3번의 방법
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.AppName" parent="Theme.AppCompat.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
3번의 경우 테마가 변경이 되었기 때문에 아래의 사진을 참고하여 내용을 수정해주면 좋다.
버튼 이슈 : github.com/material-components/material-components-android/issues/889
'안드로이드(Android) > 코틀린(Kotlin)' 카테고리의 다른 글
[Android] SimpleDateFormat에 대하여 (0) | 2021.04.23 |
---|---|
[Android] E/libc: Access denied finding property "ro.serialno" 에러시 대처법 (0) | 2021.04.20 |
[Android] RecyclerView 스크롤시 설정 해제되는 현상(체크박스, 백그라운드색상 등)해결법 (0) | 2021.02.18 |
[Android] DataBinding 편하게 사용하기(BaseActivity, BaseFragment) (2) | 2021.01.23 |
[Android] Recycler View - Step 4 (0) | 2021.01.19 |
Comments