设计一个视图,使图标填充屏幕但不拉伸图像

时间:2013-10-18 09:08:14

标签: android android-layout android-image

我目前有以下布局(见下文)。现在我遇到的问题是,我需要图标来填满屏幕(所以我需要将屏幕分成6个区块。但最大的问题是我的图像拉伸,看起来非常糟糕。所有图像是256X256。如果空间高于或低于拉伸空间,我还能做些什么?

布局

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.60"
    android:orientation="horizontal"
    android:weightSum="3" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/category_menu_button_food"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/menu_icon"
            android:contentDescription="Food Menu"
            android:onClick="foodMenuItemClicked"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/category_menu_label_food"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:ems="20"
            android:gravity="center"
            android:text="Menu"
            android:textSize="25sp" >

            <requestFocus />
        </TextView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/search_icon"
            android:contentDescription="Drinks Menu"
            android:onClick="searchMenuItemClicked"
            android:paddingTop="55dp"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/category_menu_label_food"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:ems="20"
            android:gravity="center"
            android:text="Search"
            android:textSize="25sp" >
        </TextView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/button3"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/cart_icon"
            android:contentDescription="Favorites"
            android:onClick="favoritesMenuItemClicked"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/category_menu_label_food"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:ems="20"
            android:gravity="center"
            android:text="Cart"
            android:textSize="25sp" >
        </TextView>
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.60"
    android:orientation="horizontal"
    android:weightSum="3" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/button4"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/bill_icon"
            android:contentDescription="View Bill"
            android:onClick="billMenuItemClicked"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/category_menu_label_food"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:ems="20"
            android:gravity="center"
            android:text="Bill"
            android:textSize="25sp" >
        </TextView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/activity_category_menu_button_callWaiter"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/callwaiter_icon"
            android:contentDescription="Call Waiter"
            android:onClick="callWaiterButtonClicked"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/category_menu_label_food"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:ems="20"
            android:gravity="center"
            android:text="Call Waiter"
            android:textSize="25sp" >
        </TextView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/button6"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/exit_icon"
            android:contentDescription="Exit App"
            android:onClick="exitButtonClicked"
            android:scaleType="centerInside" />

        <TextView
            android:id="@+id/category_menu_label_food"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:ems="20"
            android:gravity="center"
            android:text="Exit App"
            android:textSize="25sp" >
        </TextView>
    </LinearLayout>
</LinearLayout>

<Space
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Space
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

3 个答案:

答案 0 :(得分:0)

我认为您可以wrap_content使用ImageView layout_width和layout_height

您使用RelativeLayout instead of LinearLayout

您在Root of layout中使用 RelativeLayout ,在根中使用两个ReltavieLayout。并且为了不拉伸图像,您应该为不同尺寸和密度的设备使用不同尺寸的图像。

答案 1 :(得分:0)

不要设置图像的宽度和高度,将高度/宽度属性保留为 WRAP_CONTENT ,这样图像既不会缩小也不会拉伸。

答案 2 :(得分:0)

请尝试更改宽度和高度以换行内容,而不是给匹配父级。 或者将scaletype更改为fitxy。