Pertanyaan Bagaimana tombol menjadi abu-abu?


Saya memiliki tombol yang didefinisikan seperti yang ditunjukkan di bawah ini. Ketika saya ingin menonaktifkannya saya gunakan my_btn.setEnabled(false), tapi saya juga ingin mengaburkannya. Bagaimana saya bisa melakukannya?

Terima kasih

<Button android:id="@+id/buy_btn" style="@style/srp_button" />

gaya / srp_button

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_default</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:textSize">14sp</item>
    <item name="android:typeface">serif</item>
    <item name="android:paddingLeft">30dp</item>
    <item name="android:paddingRight">30dp</item>
    <item name="android:paddingTop">5dp</item>
    <item name="android:paddingBottom">5dp</item>
</style>

drawable / btn_default.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/pink" />
    <corners android:radius="6dp" />
</shape>

75
2018-01-05 13:15


asal


Jawaban:


Anda harus menyediakan 3 atau 4 negara bagian di Anda btn_defaut.xml sebagai pemilih.

  1. Negara yang ditekan
  2. Status default
  3. Keadaan fokus
  4. Status aktif (Nonaktifkan keadaan dengan indikasi salah; lihat komentar)

Anda akan memberikan efek dan latar belakang untuk negara-negara yang sesuai.

Berikut ini adalah diskusi mendetail: Tombol Android Standar dengan warna yang berbeda


46
2018-01-05 13:21



Anda juga dapat membuatnya tampak dinonaktifkan dengan mengatur alfa (membuatnya semi-transparan). Ini sangat berguna jika latar belakang tombol Anda adalah gambar, dan Anda tidak ingin membuat negara untuk itu.

button.setAlpha(.5f);
button.setClickable(false);

108
2017-11-25 00:48



Solusi yang paling mudah adalah mengatur filter warna ke gambar latar belakang tombol seperti yang saya lihat sini

Anda dapat melakukan sebagai berikut:

if ('need to set button disable')
    button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
else
    button.getBackground().setColorFilter(null);

Semoga saya membantu seseorang ...


40
2017-09-29 18:44



Set Dapat Diklik sebagai false dan ubah warna backgroung sebagai:

callButton.setClickable(false);
callButton.setBackgroundColor(Color.parseColor("#808080"));

9
2017-08-28 10:00



Semua jawaban yang diberikan bekerja dengan baik, tetapi saya ingat belajar bahwa menggunakan setAlpha dapat menjadi a ide buruk kinerja bijaksana (info lebih lanjut sini). Jadi menciptakan StateListDrawable adalah ide yang lebih baik untuk mengelola keadaan tombol yang dinonaktifkan. Begini caranya:

Buat XML btn_blue.xml di folder res / drawable:

<!-- Disable background -->
<item android:state_enabled="false"
      android:color="@color/md_blue_200"/>

<!-- Enabled background -->
<item android:color="@color/md_blue_500"/>

Buat gaya tombol di res / values ​​/ styles.xml

<style name="BlueButton" parent="ThemeOverlay.AppCompat">
      <item name="colorButtonNormal">@drawable/btn_blue</item>
      <item name="android:textColor">@color/md_white_1000</item>
</style>

Kemudian terapkan gaya ini ke tombol Anda:

<Button
     android:id="@+id/my_disabled_button"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:theme="@style/BlueButton"/>

Sekarang ketika Anda menelepon btnBlue.setEnabled(true) ATAU btnBlue.setEnabled(false) warna status akan berubah secara otomatis.


9
2018-06-27 01:44



Button button = (Button)findViewById(R.id.buy_btn);
button.setEnabled(false);

7
2018-01-05 13:28



Anda harus membuat file XML untuk tombol yang dinonaktifkan (drawable / btn_disable.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/grey" />
    <corners android:radius="6dp" />
</shape>

Dan buat pemilih untuk tombol (drawable / btn_selector.xml)

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/btn_disable" android:state_enabled="false"/>
    <item android:drawable="@drawable/btn_default" android:state_enabled="true"/>
    <item android:drawable="@drawable/btn_default" android:state_pressed="false" />

</selector>

Tambahkan pemilih ke tombol Anda

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_selector</item>
</style>

5
2017-12-08 09:37



Anda dapat membuat gambar abu-abu dan dimasukkan ke dalam drawable Anda dan tambahkan ini ke dalam kode Anda.

button.setBackgroundResource(R.drawable.grey);

mudah, sederhana, tetapi karena menggunakan gambar, ruang itu sedikit lebih luas.


0
2017-12-14 11:21