Mam ImageButton
i chcę pokazać na nim tekst i obraz. Ale kiedy próbuję na emulatorze:
<ImageButton
android:text="OK"
android:id="@+id/buttonok"
android:src="@drawable/buttonok"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Dostaję obraz, ale bez tekstu. Jak mogę pokazać tekst? Proszę pomóż mi!
android
imagebutton
Võ Quang Hòa
źródło
źródło
setCompoundDrawables*()
metodJest technicznie możliwe, aby umieścić podpis na,
ImageButton
jeśli naprawdę chcesz to zrobić. Wystarczy umieścićTextView
nadImageButton
użyciemFrameLayout
. Pamiętaj tylko, aby nieTextview
klikać.Przykład:
<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>
źródło
Chłopaki, muszę opracować przycisk ustawień i wylogowania, użyłem poniższego kodu.
<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" />
źródło
Właściwie
android:text
nie jest argumentem akceptowanym przezImageButton
ale, jeśli próbujesz uzyskać przycisk z określonym tłem (nie domyślnym dla Androida), użyjandroid:background
atrybutu xml lub zadeklaruj go z klasy z.setBackground();
źródło
Możesz użyć
LinearLayout
zamiastButton
tego układu, którego użyłem w mojej aplikacji<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>
źródło
Button
zamiast tego możesz użyć zwykłego atrybutu i atrybutu android: drawableTop (lub left, right, bottom).źródło
Najlepszym sposobem:
<Button android:text="OK" android:id="@+id/buttonok" android:background="@drawable/buttonok" android:layout_width="match_parent" android:layout_height="wrap_content"/>
źródło
Rozwiązałem to, umieszczając
ImageButton
iTextView
wewnątrz aLinearLayout
z orientacją pionową. Działa świetnie!<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>
źródło
Oto ładny przykład koła:
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>
A następnie przycisk w pliku xml:
<Button android:id="@+id/btn_send" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/circle" android:text="OK"/>
źródło
ImageButton
nie może miećtext
(a przynajmniejandroid:text
nie jest wymieniona w atrybutach).Sztuczka to:
Wygląda na to, że musisz użyć
Button
(i spojrzeć nadrawableTop
lubsetCompoundDrawablesWithIntrinsicBounds(int,int,int,int))
.źródło
Oto rozwiązanie
<LinearLayout android:id="@+id/buttons_line1" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageButton android:id="@+id/btn_mute" android:src="@drawable/btn_mute" android:background="@drawable/circle_gray" android:layout_width="60dp" android:layout_height="60dp"/> <ImageButton android:id="@+id/btn_keypad" android:layout_marginLeft="50dp" android:src="@drawable/btn_dialpad" android:background="@drawable/circle_gray" android:layout_width="60dp" android:layout_height="60dp"/> <ImageButton android:id="@+id/btn_speaker" android:layout_marginLeft="50dp" android:src="@drawable/btn_speaker" android:background="@drawable/circle_gray" android:layout_width="60dp" android:layout_height="60dp"/> </LinearLayout> <LinearLayout android:layout_below="@+id/buttons_line1" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:text="mute" android:clickable="false" android:textAlignment="center" android:textColor="@color/Grey" android:layout_width="60dp" android:layout_height="wrap_content"/> <TextView android:text="keypad" android:clickable="false" android:layout_marginLeft="50dp" android:textAlignment="center" android:textColor="@color/Grey" android:layout_width="60dp" android:layout_height="wrap_content"/> <TextView android:text="speaker" android:clickable="false" android:layout_marginLeft="50dp" android:textAlignment="center" android:textColor="@color/Grey" android:layout_width="60dp" android:layout_height="wrap_content"/> </LinearLayout>
źródło