I'm bingung pada tombol gaya untuk bahan desain. I'd untuk mendapatkan warna-warni mengangkat tombol seperti di link terlampir., seperti "force stop" dan "bersih" tombol dilihat di bawah bagian penggunaan. Ada gaya yang tersedia atau apakah saya perlu untuk mendefinisikan mereka?
http://www.google.com/design/spec/components/buttons.html#buttons-usage
Saya tidak't menemukan tombol default gaya.
Contoh:
<Button style="@style/PrimaryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
android:id="@+id/button3"
android:layout_below="@+id/editText5"
android:layout_alignEnd="@+id/editText5"
android:enabled="true" />
Jika saya mencoba untuk mengubah warna latar belakang dari tombol dengan menambahkan
android:background="@color/primary"
semua gaya pergi, seperti sentuhan animasi, bayangan, sudut membulat, dll.
Saya akan menambahkan jawaban saya karena saya don't dari jawaban yang disediakan.
Dengan Dukungan Perpustakaan v7, semua gaya yang benar-benar sudah ditetapkan dan siap untuk digunakan, untuk tombol standar, semua gaya ini tersedia:
style="@style/Widget.AppCompat.Button"
style="@style/Widget.AppCompat.Button.Colored"
style="@style/Widget.AppCompat.Button.Borderless"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
Widget.AppCompat.Tombol.Berwarna
:
Widget.AppCompat.Tombol.Borderless
Widget.AppCompat.Tombol.Borderless.Berwarna
:
Untuk menjawab pertanyaan, gaya yang digunakan oleh karena itu
<Button style="@style/Widget.AppCompat.Button.Colored"
.......
.......
.......
android:text="Button"/>
Untuk seluruh aplikasi:
Warna dari semua kontrol UI (bukan hanya tombol, tapi juga floating action buttons, checkbox, dll.) dikelola oleh atribut colorAccent
seperti yang dijelaskan di sini.
Anda dapat mengubah gaya ini dan menerapkan warna anda sendiri dalam tema anda definisi:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="colorAccent">@color/Orange</item>
</style>
Untuk tombol tertentu:
Jika anda perlu untuk mengubah gaya tombol tertentu, anda dapat menentukan gaya baru, mewarisi salah satu gaya orangtua yang dijelaskan di atas. Dalam contoh di bawah ini saya hanya mengubah latar belakang dan warna font:
<style name="AppTheme.Button" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/Red</item>
<item name="android:textColor">@color/White</item>
</style>
Kemudian anda hanya perlu untuk menerapkan gaya baru ini pada tombol dengan:
android:theme="@style/AppTheme.Button"
Untuk mengatur default tombol desain tata letak, tambahkan baris ini ke styles.xml tema:
<item name="buttonStyle">@style/btn</item>
di mana @style/btn
adalah tombol tema. Ini set tombol gaya untuk semua tombol dalam tata letak dengan tema tertentu
compile 'com.android.support:appcompat-v7:25.2.0'
public class MainActivity extends AppCompatActivity
<RelativeLayout
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">
<android.support.v7.widget.AppCompatButton
android:id="@+id/buttonAwesome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Awesome Button"
android:textColor="@color/whatever_text_color_you_want"
app:backgroundTint="@color/whatever_background_color_you_want"/>
Jika saya memahami anda dengan benar, anda ingin melakukan sesuatu seperti ini:
Dalam kasus seperti ini, itu harus cukup untuk menggunakan:
<item name="android:colorButtonNormal">#2196f3</item>
Atau untuk API kurang dari 21:
<item name="colorButtonNormal">#2196f3</item>
Selain untuk Menggunakan Tema Materi Tutorial.
Animasi varian ini [di sini][3].
Berikut adalah bagaimana saya mendapatkan apa yang saya inginkan.
Pertama, membuat tombol (dalam styles.xml
):
<style name="Button">
<item name="android:textColor">@color/white</item>
<item name="android:padding">0dp</item>
<item name="android:minWidth">88dp</item>
<item name="android:minHeight">36dp</item>
<item name="android:layout_margin">3dp</item>
<item name="android:elevation">1dp</item>
<item name="android:translationZ">1dp</item>
<item name="android:background">@drawable/primary_round</item>
</style>
Riak dan latar belakang untuk tombol, sebagai drawable primary_round.xml
:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/primary_600">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="1dp" />
<solid android:color="@color/primary" />
</shape>
</item>
</ripple>
Ini menambahkan efek riak yang saya cari.
Dengan rilis stabil Android Komponen Bahan dalam Nov 2018, Google telah memindahkan material komponen dari namespace
android.dukungan.desain
untukcom.google.android.bahan
. Komponen bahan perpustakaan adalah pengganti untuk Android Desain Dukungan Perpustakaan.
Tambahkan ketergantungan untuk membangun.gradle
:
dependencies { implementation ‘com.google.android.material:material:1.0.0’ }
Kemudian tambahkan MaterialButton
untuk tata letak anda:
<com.google.android.material.button.MaterialButton
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
app:strokeColor="@color/colorAccent"
app:strokeWidth="6dp"
app:layout_constraintStart_toStartOf="parent"
app:shapeAppearance="@style/MyShapeAppearance"
/>
Anda dapat memeriksa dokumentasi lengkap di sini dan API di sini.
Untuk mengubah warna latar belakang anda memiliki 2 pilihan.
backgroundTint
atribut.Sesuatu seperti:
<style name="MyButtonStyle"
parent="Widget.MaterialComponents.Button">
<item name="backgroundTint">@color/button_selector</item>
//..
</style>
materialThemeOverlay
atribut.Sesuatu seperti:
<style name="MyButtonStyle"
parent="Widget.MaterialComponents.Button">
<item name=“materialThemeOverlay”>@style/GreenButtonThemeOverlay</item>
</style>
<style name="GreenButtonThemeOverlay">
<!-- For filled buttons, your theme's colorPrimary provides the default background color of the component -->
<item name="colorPrimary">@color/green</item>
</style>
Opsi#2 memerlukan 'com.google.android.bahan:bahan:1.1.0'.
Dukungan TUA Perpustakaan:
Dengan baru Dukungan Perpustakaan 28.0.0, Desain Perpustakaan sekarang berisi MaterialButton
.
Anda dapat menambahkan tombol ini untuk kita tata letak file dengan:
<android.support.design.button.MaterialButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="YOUR TEXT"
android:textSize="18sp"
app:icon="@drawable/ic_android_white_24dp" />
Secara default kelas ini akan menggunakan aksen warna theme anda untuk tombol diisi latar belakang warna selain putih untuk tombol warna teks.
Anda dapat menyesuaikan tombol dengan atribut-atribut ini:
app:rippleColor
: warna yang akan digunakan untuk tombol efek riak
app:backgroundTint
: Digunakan untuk menerapkan warna untuk latar belakang tombol. Jika anda ingin mengubah warna latar belakang tombol, gunakan atribut ini bukan latar belakang.
app:strokeColor
: warna yang akan digunakan untuk tombol stroke
app:strokeWidth
: lebar yang akan digunakan untuk tombol stroke
app:cornerRadius
: Digunakan untuk menentukan radius digunakan untuk sudut-tombol
Berikut ini adalah contoh yang akan membantu dalam menerapkan gaya tombol secara konsisten di seluruh aplikasi anda.
Berikut ini adalah contoh Tema yang saya digunakan dengan gaya tertentu..
<style name="MyTheme" parent="@style/Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:buttonStyle">@style/ButtonAppTheme</item>
</style>
<style name="ButtonAppTheme" parent="android:Widget.Material.Button">
<item name="android:background">@drawable/material_button</item>
</style>
Ini adalah bagaimana saya mendefinisikan tombol shape & efek di dalam res/drawable-v21 folder...
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="2dp" />
<solid android:color="@color/primary" />
</shape>
</item>
</ripple>
2dp sudut untuk tetap konsisten dengan tema Materi.
Di samping android.dukungan.desain.tombol.MaterialButton
(yang disebutkan oleh Gabriele Mariotti),
Ada juga yang lain Tombol
widget disebut com.google.android.bahan.tombol.MaterialButton
yang memiliki gaya yang berbeda dan meluas dari AppCompatButton
:
style="@style/Widget.MaterialComponents.Button"
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
style="@style/Widget.MaterialComponents.Button.TextButton"
style="@style/Widget.MaterialComponents.Button.Icon"
style="@style/Widget.MaterialComponents.Button.TextButton.Icon"
Diisi, ditinggikan Tombol
(default):
style="@style/Widget.MaterialComponents.Button"
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
style="@style/Widget.MaterialComponents.Button.TextButton"
style="@style/Widget.MaterialComponents.Button.Icon"
app:icon="@drawable/icon_24px" // Icons can be added from this
Baca: https://material.io/develop/android/components/material-button/
kenyamanan kelas untuk menciptakan Bahan baru tombol.
kelas Ini persediaan diperbarui Materi gaya untuk tombol di konstruktor. Widget ini akan menampilkan default yang benar Bahan gaya tanpa menggunakan gaya bendera.
Saya mencoba banyak jawaban & pihak ketiga libs, tapi tidak ada yang menjaga perbatasan dan mengangkat efek pada pra-lollipop sementara memiliki efek riak pada lollipop tanpa kelemahan. Berikut adalah solusi akhir yang menggabungkan beberapa jawaban (perbatasan/diangkat adalah tidak baik diberikan pada gifs karena grayscale kedalaman warna) :
Lollipop
Pra-lollipop
membangun.gradle
compile 'com.android.support:cardview-v7:23.1.1'
layout.xml
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card"
card_view:cardElevation="2dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardMaxElevation="8dp"
android:layout_margin="6dp"
>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp"
android:background="@drawable/btn_bg"
android:text="My button"/>
</android.support.v7.widget.CardView>
drawable-v21/btn_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="?attr/colorPrimary"/>
</ripple>
drawable/btn_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimaryDark" android:state_pressed="true"/>
<item android:drawable="@color/colorPrimaryDark" android:state_focused="true"/>
<item android:drawable="@color/colorPrimary"/>
</selector>
Kegiatan's onCreate
final CardView cardView = (CardView) findViewById(R.id.card);
final Button button = (Button) findViewById(R.id.button);
button.setOnTouchListener(new View.OnTouchListener() {
ObjectAnimator o1 = ObjectAnimator.ofFloat(cardView, "cardElevation", 2, 8)
.setDuration
(80);
ObjectAnimator o2 = ObjectAnimator.ofFloat(cardView, "cardElevation", 8, 2)
.setDuration
(80);
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
o1.start();
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
o2.start();
break;
}
return false;
}
});
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="4dp"
android:insetTop="6dp"
android:insetRight="4dp"
android:insetBottom="6dp">
<ripple android:color="?attr/colorControlHighlight">
<item>
<shape android:shape="rectangle"
android:tint="#0091ea">
<corners android:radius="10dp" />
<solid android:color="#1a237e" />
<padding android:bottom="6dp" />
</shape>
</item>
</ripple>
</inset>
I've hanya menciptakan sebuah perpustakaan android, yang memungkinkan anda untuk dengan mudah mengubah warna tombol dan riak warna
https://github.com/xgc1986/RippleButton
<com.xgc1986.ripplebutton.widget.RippleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="Android button modified in layout"
android:textColor="@android:color/white"
app:buttonColor="@android:color/black"
app:rippleColor="@android:color/white"/>
Anda don't perlu membuat gaya untuk setiap tombol yang anda inginkan kecerdasan yang berbeda warna, yang memungkinkan anda untuk menyesuaikan warna secara acak
anda dapat memberikan penerbangan ke view dengan menambahkan sumbu z untuk itu dan dapat memiliki default bayangan itu. fitur ini telah disediakan di L preview dan akan tersedia setelah rilis. Untuk saat ini anda hanya dapat menambahkan gambar yang memberikan tampilan ini untuk tombol latar belakang