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:backgroundTint
tí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 ColorStateList
mã 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:backgroundTint
hoạ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 AppCompatButton
thay vì bình thường Button
nế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 ColorStateList
từ 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.AppCompat
chủ đề, 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').