135

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

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

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

4

12 に答える 12

292

使用できないためandroid:text、通常のボタンを使用し、複合ドローアブルのいずれかを使用することをお勧めします。例えば:

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

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

アップデート

ボタンの場合、これもかなりうまく機能します。パッティング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" />

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

于 2010-12-16T02:55:44.220 に答える
68

キャプションを付けImageButtonたい場合は、技術的に可能です。使用中のTextView上に置くだけです。クリック可能にしないことを忘れないでください。ImageButtonFrameLayoutTextview

例:

<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>
于 2011-07-19T16:30:33.520 に答える
4

を使用する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>
于 2017-01-06T21:02:56.447 に答える
4

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

于 2010-12-16T02:52:45.530 に答える
3

代わりに、通常Buttonの android:drawableTop 属性 (または left、right、bottom) を使用できます。

于 2010-12-16T02:56:47.067 に答える
3

これを解決するには、垂直方向の中にImageButtonandを入れます。よく働く!TextViewLinearLayout

<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>
于 2015-05-03T16:27:48.587 に答える
2

最良の方法:

<Button 
android:text="OK" 
android:id="@+id/buttonok" 
android:background="@drawable/buttonok"
android:layout_width="match_parent" 
android:layout_height="wrap_content"/>
于 2012-10-18T12:25:12.400 に答える
1

素敵な円の例を次に示します。

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"/>
于 2015-05-10T16:35:33.860 に答える
1

Text上に表示するための最良の方法button(画像付き)

画像の背景を持つボタンのテキストの例

あなたの質問: に表示textするにはどうすればよいimagebuttonですか?

回答text: では表示できませんimageButton承認された回答で伝える方法も機能しません。

なぜなら

を使用するとof にandroid:drawableLeft="@drawable/buttonok"設定できません。drawablecenterbutton

あなたが使用する場合android:background="@drawable/button_bg"color、あなたのdrawableが変更されます。

Android の世界では、これを行うための何千ものオプションがあります。しかし、ここでは、私の観点から最良の代替案を提供します。(下記参照)

解決策:cardViewで使用LinearLayout

中央に表示されますのでおdrawable/image使いください。LinearLayoutそして、textViewあなたの助けを借りて、これを設定できますtextcardView背景を にしますtransparent

<androidx.cardview.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="99dp"
                android:layout_margin="16dp"
                app:cardBackgroundColor="@android:color/transparent"
                app:cardElevation="0dp"
                app:cardUseCompatPadding="true">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@drawable/your_selected_image"
                    >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:text="Happy Coding"
                        android:textSize="33sp"
                        android:gravity="center"
                        >
                    </TextView>

                </LinearLayout>
            </androidx.cardview.widget.CardView>

ここでいくつかの用語を説明します:

app:cardBackgroundColor="@android:color/transparent"背景を透明にするcardView

app:cardElevation="0dp"周囲の標高線を非表示にするcardView

app:cardUseCompatPadding="true"の実際のサイズを提供しますcardView。ご利用の際は必ずこちらをご利用くださいcardView

背景としてあなたimage/drawableを設定します。LinearLayout

私の悪い英語で申し訳ありません。

ハッピーコーディング:)

于 2020-12-06T19:20:29.977 に答える
0

ImageButton持つことはできませんtext(または、少なくとも、android:textその属性にリストされていません)。

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

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

于 2014-12-22T12:09:11.997 に答える