Наиболее эффективный способ реализации шаблона интерфейса Dashboard?
Я хочу сделать шаблон Dashboard. В настоящее время я делаю это для каждой кнопки домой:
<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 ответ
Вот некоторый код, который я использую для программной панели:
@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-файле, если бы вы могли создать панель мониторинга заранее.