如何显示ImageButton上的文字?

我有一个ImageButton,我想要显示一个文本和图像。 但是当我尝试

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

我在模拟器上得到的button有图像,但没有文字。 我如何显示文本,请帮助我!

正如你不能使用android:text我build议你使用一个普通的button,并使用其中一个复合绘制。 例如:

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

您可以使用drawableTopdrawableBottomdrawableLeftdrawableRight将drawable放在任意位置。

UPDATE

对于一个button,这也工作得很好。 把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" /> 

我只是有这个问题,并正在完美的工作。

如果你真的想要做一个图像button,在技术上是可能的。 只需使用FrameLayout在图像button上放置一个textview。 只要记住不要使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> 

实际上, android:text不是一个被ImageButton接受的参数,但是,如果你想获得一个具有指定背景的button(不是android默认),可以使用android:background xml属性,或者使用.setBackground();

您可以使用常规Button和android:drawableTop属性(或左,右,底部)来代替。

最好的办法:

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

您可以使用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> 

我解决了这个问题,将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> 

这里有个很好的例子:

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:

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

我需要开发设置和注销button,我使用下面的代码。 在这里输入图像说明

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

ImageButton不能有text (或者,至lessandroid:text没有在其属性中列出)。

诀窍是:

它看起来像你需要使用Button (看看drawableTopsetCompoundDrawablesWithIntrinsicBounds(int,int,int,int))