나쁜 소식
BoD가 말했듯이 Lollipop 5.0 (API 레벨 21)에서 Button의 배경에 색을 입히는 것은 의미가 없습니다.
좋은 뉴스
Lollipop 5.1 (API 레벨 22)은 btn_mtrl_default_shape.xml (다른 파일 중에서)을 변경하여이 문제를 해결 한 것 같습니다. https://android.googlesource.com/platform/frameworks/base/+/6dfa60f33ca6018959ebff1efde82db7d2aed1e3%5E!/#F0
좋은 소식
새로운 지원 라이브러리 (버전 22.1+)는 이전 버전과 호환 염색 지원 추가 를 포함하여 구성 요소의 많은에 AppCompatButton를 !
불행하게도, android:backgroundTint
속성은 아직도 일을 (어쩌면 내가 뭔가 잘못하고 있어요) 않습니다 - 당신은 설정해야하므로 ColorStateList
사용하여 코드에서 setSupportBackgroundTintList()
. android:backgroundTint
앞으로 지원되는 모습을 보면 정말 좋을 것 같습니다. 업데이트 : Marcio Granzotto app:backgroundTint
가 AppCompatButton에서 작동하는 댓글을 달았습니다 ! 그것의 것을 참고 app:
하지, android:
그것을 응용 프로그램 / 라이브러리에 있기 때문에.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<AppCompatButton
android:id="@+id/mybutton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Testing, testing"
app:backgroundTint="#ff00ff"/>
</LinearLayout>
에서 상속하도록 허용하면 활동이 AppCompatButton
정상 대신 자동으로 팽창 Button
됩니다 AppCompatActivity
.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatButton v = (AppCompatButton) findViewById(R.id.mybutton);
ColorStateList csl = new ColorStateList(new int[][]{new int[0]}, new int[]{0xffffcc00});
v.setSupportBackgroundTintList(csl);
}
}
물론 ColorStateList
색상 리소스에서 가져와야하지만 나는 게으 르기 때문에 ...
아, 그리고 테마 중 하나를 기반으로 앱 테마를 작성하는 것을 잊지 마십시오 Theme.AppCompat
.
이것은 2.3.7 (Gingerbread MR1)과 5.0 (Lollipop 'Classic') 모두에서 작동했습니다.