我想做仪表板模式。我目前为每个主页按钮执行此操作:
<FrameLayout
android:layout_weight="1"
android:focusable="true"
android:onClick="onHomeButtonClicked"
android:background="@drawable/button_background">
<TextView
android:text="@string/button_text"
android:drawableTop="@drawable/button_icon"
android:layout_gravity="center"
android:gravity="center"
android:background="@android:color/transparent" />
</FrameLayout>
我将按钮包装在 FrameLayout 中的原因是我想:
- 最大化可点击区域
- 正确制作图标和文本中心。
我过去尝试过这样做,但放弃了,因为我无法找到一种独立于屏幕尺寸的方式来居中文本和图标:
<Button
android:layout_weight="1"
android:background="@drawable/button_background"
android:text="@string/button_text"
android:onClick="onHomeButtonClicked"
android:drawableTop="@drawable/button_icon"
android:drawablePadding="DONT_KNOW_WHAT_TO_PUT_IN_HERE" />
我的问题:是否有可能做到所有这些:
- 不将按钮包装在其他内部布局(每个仅使用 1 个视图按钮)
- 最大化可点击区域
- 使图标和文本正确居中与屏幕尺寸无关的方式
非常感谢。
下面是一些用于以编程方式构建仪表板的代码:
@Override public View getView(int position, View convertView,
ViewGroup parent) {
TextView v = (TextView) convertView;
if (v == null) {
v = new TextView(DashboardActivity.this);
v.setGravity(Gravity.CENTER);
}
v.setCompoundDrawablesWithIntrinsicBounds(0,
mIcons[position].drawableId, 0, 0);
v.setText(mIcons[position].labelId);
return v;
}
您可以改用 android:drawableTop 在 XML 文件中,如果您可以事先构建仪表板。