我将按钮定义如下:
<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'垂直居中 - 但这似乎不是一个好主意。我猜它在不同的屏幕分辨率/尺寸上无法正常工作。
答案 0 :(得分:12)
新答案
显然我误解了这个问题。答案是使用:
<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"
有什么用?似乎不对。
答案 1 :(得分:9)
'android:gravity'似乎只能起作用 在文本标签上。它不会影响 'drawableTop'定位。
正确。
我能够将它垂直居中 使用'android:paddingTop' - 但是那个 似乎不是一个好主意。一世 猜猜它无法正常工作 不同的屏幕分辨率/尺寸。
您可以通过使用维度资源来解决此问题。
但是,除了通过填充之外,您不能“在Button上垂直居中drawableTop和文本”。 Button
的可绘制功能不是很容易配置。
答案 2 :(得分:0)
您可以将textview与其属性一起使用。
<LinearLayout
style="@android:style/Widget.Button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/.."
android:text="" />
</LinearLayout>
答案 3 :(得分:-1)
<Button
android:id="@+id/....."
android:...............
.......................
android:gravity="center_horizontal"
/>
我很好。
答案 4 :(得分:-2)
使用android:drawableTop="@drawable/Icon"
代替背景
别忘了改变
android:layout_width="fill_parent"
android:layout_height="wrap_content"