如何显示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"/>
您可以使用drawableTop
, drawableBottom
, drawableLeft
或drawableRight
将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>
我解决了这个问题,将ImageButton
和TextView
放在垂直方向的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
(看看drawableTop
或setCompoundDrawablesWithIntrinsicBounds(int,int,int,int))
。