Android-макет для кнопок с изображениями - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь создать макет Android, который использует около 1/3 экрана для названия приложения. И затем для других 2/3 у него есть 6 равномерно расположенных кнопок в строках по 2, в 3 столбцах. В каждой кнопке будет содержаться текст и изображение, которые потенциально могут различаться по размеру. Я много читал и до сих пор не нашел идеального пути к этому. У меня есть пример, который в основном работает, за исключением нескольких моих кнопок разных размеров, и поэтому это не работает (кнопки разных размеров). Кроме того, я понятия не имею, будет ли он работать с телефонами разных размеров. Во всяком случае, если кто-нибудь может взглянуть на этот XML-макет и, возможно, предложить лучший способ. Благодарю.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget30"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/green6"
android:orientation="vertical"
android:padding="5dp" >

<RelativeLayout
    android:id="@+id/RelativeLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/border"
    android:padding="5dp" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/widget31"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:text="Title Will Go Here"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@color/green6"
                android:textSize="35sp"
                android:textStyle="bold" 
                android:shadowColor="@color/black"
                android:shadowDx="0"
                android:shadowDy="0"
                android:shadowRadius="1"
                />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:paddingBottom="4dp" >

            <LinearLayout
                android:id="@+id/linearLayout6"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:paddingLeft="10dp"
                android:paddingRight="5dp" >

                <Button
                    android:id="@+id/button1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:background="@drawable/custom_button"
                    android:drawableTop="@drawable/search"
                    android:text="Search by Food"
                    android:textColor="@color/green6"
                    android:textStyle="bold" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/linearLayout6"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:paddingLeft="5dp"
                android:paddingRight="10dp" >

                <Button
                    android:id="@+id/button2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:background="@drawable/custom_button"
                    android:drawableTop="@drawable/search2"
                    android:text="Search by Substitute"
                    android:textColor="@color/green6"
                    android:textStyle="bold" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:paddingBottom="4dp" >

            <LinearLayout
                android:id="@+id/linearLayout6"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:paddingLeft="10dp"
                android:paddingRight="5dp" >

                <Button
                    android:id="@+id/button3"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:background="@drawable/custom_button"
                    android:drawableTop="@drawable/browse"
                    android:text="Browse by Category"
                    android:textColor="@color/green6"
                    android:textStyle="bold" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/linearLayout6"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:paddingLeft="5dp"
                android:paddingRight="10dp" >

                <Button
                    android:id="@+id/button4"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:background="@drawable/custom_button"
                    android:drawableTop="@drawable/award"
                    android:text="Most Popular"
                    android:textColor="@color/green6"
                    android:textStyle="bold" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout4"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <LinearLayout
                android:id="@+id/linearLayout6"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:paddingLeft="10dp"
                android:paddingRight="5dp" >

                <Button
                    android:id="@+id/button5"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:background="@drawable/custom_button"
                    android:drawableTop="@drawable/share"
                    android:text="Sync with Online Database"
                    android:textColor="@color/green6"
                    android:textStyle="bold" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/linearLayout6"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:paddingLeft="5dp"
                android:paddingRight="10dp" >

                <Button
                    android:id="@+id/button6"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:background="@drawable/custom_button"
                    android:drawableTop="@drawable/plus"
                    android:text="Submit New Food Substitute"
                    android:textColor="@color/green6"
                    android:textStyle="bold" />

            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

1 Ответ

0 голосов
/ 10 марта 2012

Я бы использовал LinearLayout верхнего уровня и указал бы layout_weight, равный 1, для заголовка приложения.Затем я бы использовал DashboardLayout с layout_weight 2 для сетки 2x3 для ImageButtons.

DashboardLayout использовался в приложении Google I / O 2011, также известном как IOSched, доступном на http://code.google.com/p/iosched/.Я бы порекомендовал скачать и просмотреть этот код для некоторых примеров того, как работает этот макет.Обратите внимание, что вам придется скопировать один файл DashboardLayout.java в ваш проект.

Вы можете сделать это еще проще, если используете ActionBar - просто укажите заголовок для своей Деятельности в AndroidManifest.xml.а затем установите DashboardLayout в корне вашего макета.Название приложения не будет приближаться к 1/3, но, вероятно, будет лучше соответствовать приложениям Honeycomb / ICS.

...