2011-05-07 42 views
0

我想做Dashboard pattern。我目前做到这一点每个家庭按钮:实现Dashboard UI模式的最有效方法?

<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. (仅使用1按次 按钮)
  2. 最大化点击未包裹内的其他 布局按钮一个
  3. 正确居中的图标和文字 一个屏幕大小无关的方式

非常感谢。

+0

检查完您提供的链接之后,是否有理由不使用GridView创建仪表板模式?或者,你是如何填充这些布局来显示的呢? – harism 2011-05-07 09:17:40

+0

是否可以在XML布局中声明'GridView'的内容,或者我必须在Java中填充它们? – Phil 2011-05-07 18:32:15

回答

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

你也可以使用安卓drawableTop在一个XML文件,如果你能事先建立的仪表板。

相关问题