Düğme arka plan şeffaf olarak


177

Bir düğmem var. Düğmeye bastığımda, metni normal olarak kalın yapmalıyım. Bu yüzden cesur ve normal stiller yazdım.

<style name="textbold" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">bold</item>
</style>
<style name="textregular" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">normal</item>
</style>

Şimdi bir button_states.xml var:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true"
    style="@style/textbold" />
<item android:state_focused="false" android:state_pressed="true"
    style="@style/textregular" />

<item style="@style/textregular" />
</selector> 

Bu düğme için düzenimde, arka planı da şeffaf yapmam gerekiyor ... Nasıl yapacağım? Düzen kodum:

<Button android:id="@+id/Btn" android:background="@drawable/button_states" />

Tarzıma şeffaf olarak arka planı nasıl ekleyeceğim?


3
Bu iyi cevaplar o kadar çok ... şimdi kabul edilebilir
QED

kenarlıklı şeffaf düğme yapmak için bu cevabı buradan kontrol edin
Basheer AL-MOMANI

'neden yalnızca bir TextView kullanmıyor ve onClick üzerindeki işlemi çağırmıyorsunuz?
Dula wnRp

Yanıtlar:


360

Bir arka planı şeffaf yapmak için yapmanız yeterlidir android:background="@android:color/transparent".

Ancak, seçicileri gerçekten garip bir şekilde kullandığınızdan, sorununuz biraz daha derin görünüyor. Kullanma şekliniz yanlış görünüyor, ancak gerçekten işe yarıyorsa, arka plan görüntüsünü stilde bir olarak koymalısınız <item/>.

Android kaynağında stillerin nasıl kullanıldığına daha yakından bakın. Düğmeleri tıkladıktan sonra metin stilini değiştirmese de, orada hedeflerinize nasıl ulaşılacağına dair birçok iyi fikir var.


1
Açıkça cevaplarıma bir göz atın. Başlamak için probleminizi yanlış okudum. Arka plan tarzda ayarlanır.
Steve Pomeroy

Üzgünüm, çözüm konusunda net değilim. Sadece @android: color / şeffaf ayarı normal düğmelerin sahip olduğu dokunmatik stilleri desteklemez (ve arka planı @null olarak ayarlamakla eşdeğerdir).
gatoatigrado

@gatoatigrado: saydam bir alanın turuncu renkte özetlenmesini veya bazılarında gölgeli olmasını mı istiyorsunuz? Öyleyse, bunun için özel 9 yama görüntüleri oluşturmanız gerekir.
Steve Pomeroy

@StevePomeroy, evet, Android 4.1'deki varsayılan düğme efekti, [düğmesine basıldığında] arka planın daha açık mavi bir anahatla açık mavi olması içindir.
gatoatigrado

@gatoatigrado: tamam. İsterseniz şeffaf bir düğme kullanamazsınız. Orada ne yapmaya çalıştığınızdan emin değilim.
Steve Pomeroy

121

Arka planı saydam hale getirmenin yeni yolunu deneyin

    android:background="?android:attr/selectableItemBackground"

9
Ne kullanmanızı tavsiye ederim. Bu şekilde, düğmeleriniz için güzel malzeme tasarım animasyonlarını koruyacaksınız =)
Ryan Newsom

cevap daha iyi
Marcos Dávalos

35

kullanın #0000(aksi takdirde dört sıfır olarak kabul edilecektir black) bu saydam için renk kodudur. Doğrudan kullanabilirsiniz, ancak kodun yeniden kullanımının keyfini çıkarabilmeniz için color.xml'de bir renk tanımlamanızı öneririm.


9
Neyse ki bu zaten bizim için tanımlandı@android:color/transparent
Richard Le Mesurier

34

Bunu Xml'inize ekleyin -android:background="@android:color/transparent"

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Button"
            android:background="@android:color/transparent"
            android:textStyle="bold"/>

32

Xml dosyasında:

android:background="@null"

veya kodda:

buttonVariable.setBackgroundColor(Color.TRANSPARENT);

Alternatif vermek için oy verin, tüm seçenekleri görmeyi seviyorum!
Burkely91

18

Bunu XML ile ile başardım

android:background="@android:color/transparent"

9

kullandım

btn.setBackgroundColor(Color.TRANSPARENT);

ve

android:background="@android:color/transparent"

btn.setBackgroundColor (Color.TRANSPARENT); benim için iyi çalışıyor
jay_mziray

8

Seçiciler stiller için değil, sadece çizilebilirler için çalışır. Referans


İlk olarak , düğme arka planını şeffaf hale getirmek için, aşağıdaki özellik kullanın, çünkü bu malzeme tasarım animasyonlarını etkilemez:

style="?attr/buttonBarButtonStyle"

Düğmenizi şekillendirmenin birçok yolu vardır. Bu eğiticiye göz atın .

İkinci olarak , metnin basılı kalmasını sağlamak için şu java kodunu kullanın:

btn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
            // When the user clicks the Button
            case MotionEvent.ACTION_DOWN:
                btn.setTypeface(Typeface.DEFAULT_BOLD);
                break;

            // When the user releases the Button
            case MotionEvent.ACTION_UP:
                btn.setTypeface(Typeface.DEFAULT);
                break;
        }
        return false;
    }
});

1

Alfa kanalı renklerini ayarlayarak bunu başarabilirsiniz.

Renk şeması şöyledir: #AARRGGBB orada A alfa kanalı (saydamlık), R kırmızı, yeşil G ve mavi B'dir.


1

1. Adım: Çekilebilir ve kopyala yapıştır içinde yeni bir kaynak dosyası oluşturun

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke android:color="#fff" android:width="2dp"/>
    <corners android:radius="25dp"/>
    <padding android:right="15dp" android:top="15dp" android:bottom="15dp" android:left="15dp"/>
</shape>

ButtonUI olarak kaydet (diyelim)

2. Adım: Kullanıcı arayüzünü xml düğmesine uygulayın

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="join the crew"
  android:background="@drawable/ButtonUI"
  android:textColor="#fff"/>

0

Kod:

button.setVisibility(View.INVISIBLE);

xml:

android:background="@android:color/transparent"

0

Biz özelliğini kullanabilirsiniz arka planı: android içinde Düğme aşağıda gibi xml.

android:background="?android:attr/selectableItemBackground"

Veya stili kullanabiliriz

style="?android:attr/borderlessButtonStyle" şeffaf ve gölge daha az arka plan için.


-2

Arka plan rengini transparent(light gray), düğmeyi tıklattığınız gibi uygularsınız .

ButtonName.setOnClickListener()

Yukarıdaki yöntemde düğmenin arka plan rengini ayarlarsınız.


6
Bunun iptal edilmesinden endişe ediyor. Bunu yapma lütfen. Gelecekteki bakıcı isminizi lanetleyecektir. Seçiciyle bir arka plan belirleyin ve basılanlar için bir renk / çizilebilir ve diğeri için değil. Dinleyicide değiştirmek için kod yazmayın - bu böyle yapılmaz.
themightyjon

-2

Bunu xml dosyasında aşağıdaki özniteliği ekleyerek kolayca yapabilirsiniz. Bu kod çok zaman test edildi.

android:background="@android:color/transparent"

2
Bu cevabı neden eklemelisiniz? Bu çözüm zaten en fazla oyu alan iki cevapta.
Makyen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.