Как показать текст на кнопке ImageButton? - PullRequest
115 голосов
/ 16 декабря 2010

У меня есть ImageButton, и я хочу показать текст и изображение на нем.Но когда я пытаюсь на эмуляторе:

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

я получаю изображение, но без текста.Как я могу показать текст?Пожалуйста, помогите мне!

Ответы [ 10 ]

243 голосов
/ 16 декабря 2010

Поскольку вы не можете использовать android:text, я рекомендую вам использовать обычную кнопку и использовать один из составных чертежей.Например:

<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.

ОБНОВЛЕНИЕ

Для кнопки это тоже работает довольно хорошо.Ставить 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" />

У меня только что была эта проблема и работает отлично.

57 голосов
/ 19 июля 2011

Технически возможно поставить подпись на 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>
5 голосов
/ 05 июля 2017

Ребята Мне нужно разработать кнопку настройки и выхода из системы, я использовал приведенный ниже код.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 голосов
/ 07 января 2017

Вы можете использовать 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 голосов
/ 16 декабря 2010

На самом деле android:text не является аргументом, принятым ImageButton, но, если вы пытаетесь получить кнопку с заданным фоном (не по умолчанию для Android), используйте атрибут android:background xml или объявите его изкласс с .setBackground();

2 голосов
/ 03 мая 2015

Я решил это, поместив 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>
2 голосов
/ 18 октября 2012

Лучший способ:

<Button 
android:text="OK" 
android:id="@+id/buttonok" 
android:background="@drawable/buttonok"
android:layout_width="match_parent" 
android:layout_height="wrap_content"/>
2 голосов
/ 16 декабря 2010

вместо этого вы можете использовать обычный Button и атрибут android: drawableTop (или left, right, bottom).

1 голос
/ 10 мая 2015

Вот хороший пример круга:

drawable/circle.xml * * 1004

<?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"/>
0 голосов
/ 22 декабря 2014

ImageButton не может иметь text (или, по крайней мере, android:text не указан в его атрибутах).

Хитрость:

Похоже, вам нужно использовать Button (и посмотреть на drawableTop или setCompoundDrawablesWithIntrinsicBounds(int,int,int,int)).

...