实现Dashboard UI模式的最有效方法?

时间:2011-05-07 08:12:22

标签: android design-patterns dashboard ui-design ui-patterns

我想做Dashboard pattern。我目前为每个主页按钮执行此操作:

<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. 不将Button包裹在其他内容中 布局(每个只使用1个视图) 按钮)
  2. 最大化可点击区域
  3. 正确居中图标和文字 与屏幕无关的方式
  4. 非常感谢。

1 个答案:

答案 0 :(得分:0)

以下是我用于以编程方式构建仪表板的一些代码:

@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;
}

如果您可以预先构建仪表板,则可以在XML文件中使用android:drawableTop。