Как центрировать drawableTop и текст вертикально на Кнопке в Android?

Мне определили Кнопку следующим образом:

<Button
 android:drawableTop="@drawable/ico"
 android:gravity="center"
 android:id="@+id/StartButton2x2"
 android:text="@string/Widget2x2StartBtnLabel"
 android:layout_width="0dip" 
 android:layout_height="fill_parent"
 android:layout_weight="1" 
 android:background="@drawable/widgetbtn_bg"
/>

Проблема состоит в том, что изображение 'drawableTop' выровненное к верхней границе представления Button. Я хотел бы центрировать его (вместе с текстовой меткой) вертикально на кнопке.

'android:gravity', кажется, работает только над текстовой меткой. Это не влияет на расположение 'drawableTop'.

Я смог центрировать его вертикально использующий 'android:paddingTop' - но это, кажется, не хорошая идея. Я предполагаю, что это не работало бы правильно над другим разрешением экрана / размер.

15
задан grzaks 15 April 2010 в 10:50
поделиться

2 ответа

Новый ответ

Очевидно Я неправильно понял вопрос. Ответ - использовать:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    style="@android:style/Widget.Button">

... и заключить внутрь ImageView и TextView .


Старый ответ

Вот такая мысль: оберните кнопку в FrameLayout. Что-то вроде:

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:foreground="@drawable/ico"
    android:foregroundGravity="center">
    <Button
        android:gravity="center_vertical"
        android:id="@+id/StartButton2x2"
        android:text="@string/Widget2x2StartBtnLabel"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1" 
        android:background="@drawable/widgetbtn_bg" />
</FrameLayout>

Кстати, что случилось с android: layout_width = "0dip" ? Не кажется правильным.

12
ответ дан 1 December 2019 в 04:00
поделиться

'android: gravity', похоже, работает только с текстовой меткой. Это не влияет на позиционирование "drawableTop" .

Верно.

Мне удалось центрировать его по вертикали с помощью android: paddingTop, но это не кажется хорошей идеей. Я полагаю, что это не будет работать должным образом на другом разрешении / размере экрана.

Вы могли бы решить эту проблему, используя ресурсы измерения.

Однако, кроме как с помощью заполнения, вы не можете «центрировать drawableTop и текст по вертикали на кнопке». Возможность рисования кнопки не очень настраивается.

9
ответ дан 1 December 2019 в 04:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: