Kötü haber
BoD'nin dediği gibi, bir Button'ın arka planını Lollipop 5.0'da (API seviyesi 21) renklendirmek anlamsız.
Güzel haberler
Lollipop 5.1 (API seviyesi 22), btn_mtrl_default_shape.xml'yi (diğer dosyaların yanı sıra) değiştirerek bunu çözmüş görünüyor: https://android.googlesource.com/platform/frameworks/base/+/6dfa60f33ca6018959ebff1efde82db7d2aed1e3%5E!/#F0
Harika haber
Yeni destek kitaplığı (sürüm 22.1+) geriye dönük olarak uyumlu renklendirme destek ekler dahil bileşenlerin, bir sürü AppCompatButton !
Ne yazık ki, android:backgroundTint
özellik hala çalışmıyor (belki yanlış bir şey yapıyorum) - bu yüzden ColorStateList
kullanarak kodu girmeniz gerekiyor setSupportBackgroundTintList()
. android:backgroundTint
Gelecekte desteklendiğini görmek gerçekten güzel olurdu . Güncelleme : Marcio Granzotto, bunun AppCompatButton'da app:backgroundTint
çalıştığını söyledi ! Bunun , uygulama / kitaplıkta olduğu için app:
olmadığını unutmayın 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>
Etkinliğiniz, miras almasına izin verirseniz AppCompatButton
normal yerine bir otomatik olarak şişer .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);
}
}
Tabii ki ColorStateList
bir renk kaynağından almalısın , ama tembelim, yani ...
Oh, ve uygulama temanızı Theme.AppCompat
temalardan birine dayandırmayı unutmayın , aksi takdirde uyumluluk görünümleri çok, çok üzücü olacaktır ...;)
Bu, hem 2.3.7 (Gingerbread MR1) hem de 5.0 (Lollipop 'Classic') üzerinde çalıştı.