Мне определили Кнопку следующим образом:
<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' - но это, кажется, не хорошая идея. Я предполагаю, что это не работало бы правильно над другим разрешением экрана / размер.
Новый ответ
Очевидно Я неправильно понял вопрос. Ответ - использовать:
<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"
? Не кажется правильным.
'android: gravity', похоже, работает только с текстовой меткой. Это не влияет на позиционирование "drawableTop" .
Верно.
Мне удалось центрировать его по вертикали с помощью android: paddingTop, но это не кажется хорошей идеей. Я полагаю, что это не будет работать должным образом на другом разрешении / размере экрана.
Вы могли бы решить эту проблему, используя ресурсы измерения.
Однако, кроме как с помощью заполнения, вы не можете «центрировать drawableTop и текст по вертикали на кнопке». Возможность рисования кнопки
не очень настраивается.