ImageButton'da metin nasıl gösterilir?


127

Bir var ImageButtonve üzerinde bir metin ve bir resim göstermek istiyorum. Ama öykünücüyü denediğimde:

<ImageButton 
    android:text="OK" 
    android:id="@+id/buttonok" 
    android:src="@drawable/buttonok"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" />

Görüntüyü alıyorum ama metin olmadan. Metni nasıl gösterebilirim? Lütfen bana yardım et!

Yanıtlar:


272

Kullanmadığınız gibi android:textben normal bir düğmesini kullanın ve bileşik drawables birini kullanmak önerilir. Örneğin:

<Button 
    android:id="@+id/buttonok" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/buttonok"
    android:text="OK"/>

Sen nereye istersen kullanarak çekilebilir koyabilirsiniz: drawableTop, drawableBottom, drawableLeftveya drawableRight.

GÜNCELLEME

Bir düğme için bu da oldukça iyi çalışıyor. Koymak android:backgroundiyidir!

<Button
    android:id="@+id/fragment_left_menu_login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/button_bg"
    android:text="@string/login_string" />

Bu sorunu yeni yaşadım ve mükemmel çalışıyor.


2
Bu seçenek, iki metin görünümüyle kaplanmış bir görüntü gibi çılgın görünümlü bir düğme düzenine ihtiyacınız olmadığı sürece en iyi sonucu verir. Başlangıçta widget.button olarak tanımlanan bir düzen nesnesini denedim, sonra içine bir görüntü görünümü ve bir metin görünümü ekledim, ancak bunun profilini oluşturduktan ve yukarıdaki Düğme düzeninden sonra, ölçü süresinde yaklaşık% 30, yerleşim süresinde% 50 ve 15 FramLayout'umda Çizim süresinde -% 20 ve 38 nesneden 26'ya düştü. Bu oldukça önemli bir tasarruf.
Evan R.

3
@shim drawableTop, çekilebilir olanı düğmenin üst kısmına, çekilebilir sağa, vb. yerleştirir.
Cristian

1
@RenanBandeira evet, uset setCompoundDrawables*()yöntemleri
Cristian

6
Düğmeye sığması için görüntüyü nasıl ölçeklendirebilirim? Veya görüntüyü otomatik olarak düğmeye uyacak şekilde ayarlar.
Alston

3
@Stallman ile aynı soru, görüntünün düğmeyle nasıl sığdırılacağı ve sola nasıl ayarlanacağı?
Khuong

63

ImageButtonGerçekten yapmak istiyorsanız , teknik olarak bir başlık koymak mümkündür . Sadece bir koyun TextViewüzerinde ImageButtonkullanarak FrameLayout. Sadece Textviewtıklanabilir yapmamayı unutmayın .

Misal:

<FrameLayout>
    <ImageButton
        android:id="@+id/button_x"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@null"
        android:scaleType="fitXY"
        android:src="@drawable/button_graphic" >
    </ImageButton>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:clickable="false"
        android:text="TEST TEST" >
    </TextView>
</FrameLayout>

Bu, Lollipop'ta işe yaramıyor gibi görünse de, diğerleri üzerinde mükemmel çalışıyor.
Hong

2
Bu yaklaşımla ilgili sorun, manuel olarak yapmadığınız sürece metnin düğme durumundan (devre dışı vb.) Etkilenmemesidir.
TheOperator

9

Beyler ayarı geliştirmem gerekiyor ve çıkış butonu, aşağıdaki kodu kullandım. görüntü açıklamasını buraya girin

    <Button
        android:id="@+id/imageViewLogout"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/size_30dp"
        android:layout_alignParentLeft="true"
        android:text="Settings"
        android:drawablePadding="10dp"
        android:background="@android:color/transparent"
        android:layout_alignParentBottom="true"
        android:drawableTop="@drawable/logout" />

4

Aslında, android:texttarafından kabul edilen bir argüman değildir, ImageButton ancak, belirli bir arka plana sahip bir düğme almaya çalışıyorsanız (android varsayılanı değil) android:backgroundxml özelliğini kullanın veya sınıftan şunu bildirin:.setBackground();


4

Uygulamamda kullandığım bir düzenleme LinearLayoutyerine a kullanabilirsinizButton

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:background="@color/mainColor"
        android:orientation="horizontal"
        android:padding="10dp">

        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/ic_cv"
            android:textColor="@color/offBack"
            android:textSize="20dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="@string/cartyCv"
            android:textColor="@color/offBack"
            android:textSize="25dp" />

    </LinearLayout>

Harika çözüm! onClick, LinearLayout'ta da mükemmel çalışır. Neden bir Button veya ImageButton kullanmamız gerektiğine dair bir neden görmüyorum
Sam

2

Buttonbunun yerine normal ve android: drawableTop özelliğini (veya sol, sağ, alt) kullanabilirsiniz.


2

En iyi yol:

<Button 
android:text="OK" 
android:id="@+id/buttonok" 
android:background="@drawable/buttonok"
android:layout_width="match_parent" 
android:layout_height="wrap_content"/>

2
Bu, OP'nin başlangıçta denediğinden farklı görünmüyor.
PhonicUK

Üzgünüm, kodumda hata yaptım. ImageButton değildi, sadece Button idi.
eloytxo

2

Bunu dikey yönelimle ImageButtonve TextViewiçine a koyarak LinearLayoutçözdüm. Harika çalışıyor!

<LinearLayout
    android:id="@+id/linLayout"
    android:layout_width="80dp"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/camera_ibtn"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:background="@drawable/camera" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/take_pic"
        android:textColor="#FFFFFF"
        android:textStyle="bold" />

</LinearLayout>

1

İşte güzel bir daire örneği:

drawable/circle.xml:

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

    <solid
        android:color="#ff87cefa"/>

    <size
        android:width="60dp"
        android:height="60dp"/>
</shape>

Ve sonra xml dosyanızdaki düğme:

<Button
    android:id="@+id/btn_send"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:background="@drawable/circle"
    android:text="OK"/>

0

ImageButtonolamaz text(veya en azından android:textözniteliklerinde listelenmemiş).

Püf noktası:

Kullanmanız Button(ve drawableTopveya 'ye bakmanız gerekiyor gibi görünüyor setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)).

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.