web-dev-qa-db-ja.com

ImageButtonにテキストを表示する方法は?

ImageButtonがあり、その上にテキストと画像を表示したいです。しかし、エミュレータを試してみると:

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

画像は取得できますが、テキストは表示されません。テキストを表示するにはどうすればよいですか?私を助けてください!

115
Võ Quang Hòa

Android:textを使用できないので、通常のボタンを使用し、複合ドロウアブルの1つを使用することをお勧めします。例えば:

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

drawableTopdrawableBottomdrawableLeft、またはdrawableRightを使用して、好きな場所にドロアブルを配置できます。

UPDATE

ボタンの場合、これも非常にうまく機能します。 Android:backgroundを置くことは問題ありません!

<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" />

この問題が発生したばかりで、完璧に機能しています。

242
Cristian

本当にやりたいのであれば、ImageButtonにキャプションを付けることは技術的に可能です。 TextViewを使用してImageButtonの上にFrameLayoutを置くだけです。 Textviewをクリックできないようにしてください。

例:

<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>
57
UncleIstvan

LinearLayoutを使用する代わりにButtonを使用できます。これはアプリで使用した配置です

 <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>
4
mxml

実際、Android:textImageButtonで受け入れられる引数ではありませんが、指定された背景(Androidデフォルトではない)でボタンを取得しようとしている場合は、Android:background xml属性を使用するか、.setBackground();でクラスから宣言します

4
Samuel

みんな設定とログアウトボタンを開発する必要があるので、以下のコードを使用しました。 enter image description here

    <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
Naveed Ahmad

ImageButtonTextViewを垂直方向のLinearLayout内に配置することでこれを解決しました。よく働く!

<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>
2
Rafael Dvl

代わりに、通常のButtonとAndroid:drawableTop属性(または左、右、下)を使用できます。

2
schwiz

最良の方法:

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

ナイスサークルの例を次に示します。

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>

次に、xmlファイルのボタン:

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

ImageButtontextを含めることはできません(または、少なくとも、Android:textがその属性にリストされていません)。

トリックは次のとおりです。

Buttonを使用する必要があるようです(drawableTopまたはsetCompoundDrawablesWithIntrinsicBounds(int,int,int,int))を見てください)。

0
Ajay Venugopal