Я пытаюсь реализовать DashboardLayout (Паттерн 3). Все нормально при портретной ориентации: введите описание изображения здесь

Но когда ориентация приложения меняется на альбом, это выглядит так: введите описание изображения здесь

Вот исходный код DashboardLayout.java

Файл макета деятельности, как в примере:

<?xml version="1.0" encoding="utf-8"?>
<com.example.ui.DashboardLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dashboard_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/white" >

    <Button
        android:id="@+id/posts"
        style="@style/DashboardButton"
        android:drawableTop="@drawable/ic_db_posts"
        android:onClick="onClick"
        android:text="posts" />

    ***and four same buttons***

</com.example.ui.DashboardLayout>

style/DashboardButton:

<style name="DashboardButton">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:gravity">center_horizontal</item>
        <item name="android:layout_gravity">center_vertical</item>
        <item name="android:background">@drawable/db_buttons</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">16sp</item>
        <item name="android:textColor">#000000</item>
    </style>

Фон только для состояния нажатия кнопки:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item 
        android:state_pressed="true"
        android:drawable="@drawable/db_button_bd_pressed" />

</selector>

Прессованные:

<?xml version="1.0" encoding="utf-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <padding 
        android:left="10dp"
        android:top="20dp"
        android:right="10dp"
        android:bottom="20dp" />

    <corners android:radius="10dp" />

    <solid android:color="#a6cee1" />

</shape>

В чем проблема? Помоги мне, пожалуйста.

0
Sabre 28 Сен 2012 в 02:23

1 ответ

Лучший ответ

Dashboardlayout просто работает, если количество кнопок четное. У вас нечетное число, просто вставьте дополнительную кнопку с:

android:background="@null" or "#ffffffff"//transparent

Таким образом, он будет обрабатывать его как дополнительную кнопку, но он будет прозрачным.

1
Ahmad 28 Сен 2012 в 02:31
Всего минуту назад я подумал о том же. Спасибо за ваше решение.
 – 
Sabre
28 Сен 2012 в 02:33