Malzeme Tasarımı ile Android Düğmeleri boyama ve AppCompat
AppCompat
güncelleme bugün çıktı. önce düğmeleri eski sürümleri Android L ama rengini değiştirmek mümkün oldu. Yeni AppCompat güncelleme sonra buton kayboluyor deneyin yaptığımda her iki sürüm için rengini değiştirmek için kuramıyorum. Kimseye düğme rengini değiştirmek için nasıl biliyor mu?
Aşağıdaki resimleri elde etmek istiyorum gösterir
Beyaz düğme varsayılan, kırmızı olanı istiyorum.
Bu daha önce styles.xml
: düğmeleri rengini değiştirmek için ne yaptığımı
<item name="android:colorButtonNormal">insert color here</item>
ve bunu yapmak için dinamik olarak:
button.getBackground().setColorFilter(getResources().getColor(insert color here), PorterDuff.Mode.MULTIPLY);
Ayrıca Theme.AppCompat.Light.DarkActionBar
@android:style/Theme.Material.Light.DarkActionBar
tema üst değiştirdim
CEVAP
Bu AppCompat düğmesini henüz desteklemiyor beri arka plan olarak xml kullanabilirsiniz. Bunu yapmak için Android kaynak kodunu bir göz attım ve şekillendirme malzeme düğmeleri için ilgili dosyaları buldum.
1 - kaynaktan malzeme düğme orijinal uygulama Bak.
btn_default_material.xml on android source code bakabilirsiniz.
Projelerinize dosya drawable-v21 klasör kopyalayabilirsiniz. Ama renk güzel bir sorudur burada dokunma. Değiştirmek için gereken dosya ikinci dosya.
drawable-v21/custom_btn.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
2 - orijinal malzeme düğmesinin şeklini Almak
Farkında olarak bir şekil this file of the source code bulabileceğiniz bu drawable içinde kullanılır.
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="?attr/colorButtonNormal" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
3 - malzeme düğmesi Almak boyutları
Ve bu dosyada bazı boyutları dosyası that you can find here kullanılır. Tüm dosyayı kopyalayın ve içine koydeğerlerklasör. Bu tüm tuşlara aynı boyutta malzeme düğmeleri kullanılan () uygulamak için önemlidir
4 - başka bir drawable eski sürümleri için dosya Oluşturmak
Eski sürümleri için aynı ada sahip başka bir drawable olmalıdır. Öğeleri satır içi koymak yerine başvuru yapıyorum direk. Başvuru için onları isteyebilirsiniz. Fakat yine de, en önemli şey malzeme düğmesinin özgün boyutları vardır.
drawable/custom_btn.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed state -->
<item android:state_pressed="true">
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/PRESSED_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
<!-- focused state -->
<item android:state_focused="true">
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/FOCUSED_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
<!-- normal state -->
<item>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/NORMAL_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
</selector>
Sonuç
Düğmesi Lolipop cihazlar üzerinde dalgalanma etkisi olacaktır. Eski sürümleri dalgalanma etkisi hariç tam olarak aynı düğme var. Ama farklı durumlar için drawables verdiğiniz bu yana, aynı zamanda dokunma olayları (eski yol) karşılık verirler.
Nasıl Eclipse içinde bir kütüphane (an...
Nasıl yüzen bir eylem düğmesi (FAB) an...
eşit bir android linearlayout genişliğ...
appcompat v7:21.0.0': verilen adı...
Nasıl v7 appcompat kütüphane 21 Androi...