Các tin xấu
Giống như BoD nói, việc tô màu nền của Nút trong Lollipop 5.0 (API cấp 21) là vô nghĩa.
Tin tốt
Lollipop 5.1 (API cấp 22) dường như đã khắc phục điều này bằng cách thay đổi btn_mtrl_default_shape.xml (trong số các tệp khác): https://android.googlesource.com/platform/frameworks/base/+/6dfa60f33ca6018959ebff1efde82db7d2aed1e3%5E!/#F0
Tin tuyệt vời
Thư viện hỗ trợ mới (phiên bản 22.1+) bổ sung hỗ trợ pha màu tương thích ngược cho nhiều thành phần, bao gồm cả AppCompatButton !
Thật không may, thuộc android:backgroundTinttính vẫn không hoạt động (có thể tôi đang làm sai điều gì đó) - vì vậy bạn phải đặt ColorStateListmã bằng cách sử dụng setSupportBackgroundTintList(). Sẽ rất vui nếu android:backgroundTintđược hỗ trợ trong tương lai. Cập nhật : Marcio Granzotto nhận xét rằng app:backgroundTinthoạt động trên AppCompatButton! Lưu ý rằng nó app:, không phải android:, vì nó nằm trong ứng dụng / thư viện.
<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>
Hoạt động của bạn sẽ tự động tăng một AppCompatButtonthay vì bình thường Buttonnếu bạn để nó kế thừa từ đó 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);
}
}
Tất nhiên bạn nên lấy ColorStateListtừ tài nguyên màu, nhưng tôi lười, vì vậy ...
Ồ, và đừng quên đặt chủ đề ứng dụng của bạn dựa trên một trong các Theme.AppCompatchủ đề, nếu không chế độ xem tổng hợp sẽ rất, rất buồn ...;)
Điều này hoạt động trên cả 2.3.7 (Gingerbread MR1) và 5.0 (Lollipop 'Classic').