Android开发视图比例

时间:2011-08-03 04:25:44

标签: xml android-layout

大家好我正在为Android制作游戏,我需要帮助在屏幕上放置一些视图,使它们与屏幕成比例。请考虑以下用于布局的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical"    
              android:background="@drawable/background">

<ImageView android:src="@drawable/logo" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/logo" ></ImageView>

<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2">
    <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/buttons">
         <LinearLayout android:id="@+id/main_layout" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal">
            <ImageView 
                android:paddingRight="15dp"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content" 
                android:src="@drawable/menu_start_button" 
                android:id="@+id/start_button">
            </ImageView>

            <ImageView 
                android:layout_height="wrap_content"                    
                android:layout_width="wrap_content" 
                android:src="@drawable/menu_tutorial_button" 
                android:id="@+id/tutorial_button">
            </ImageView>
         </LinearLayout>
    </ScrollView>

    <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="bottom" android:layout_alignParentRight="true" android:id="@+id/option_buttons">
            <ImageView android:id="@+id/option_sound" android:src="@drawable/option_sound" android:layout_height="wrap_content" android:layout_width="wrap_content" android:paddingRight="5dp" android:paddingBottom="5dp"/>
            <ImageView android:id="@+id/option_vibrate" android:layout_width="wrap_content" android:src="@drawable/option_vibrate" android:layout_height="wrap_content" android:paddingBottom="5dp" android:paddingRight="5dp"></ImageView>
            <ImageView android:id="@+id/option_show_help" android:layout_width="wrap_content" android:src="@drawable/option_show_help" android:layout_height="wrap_content"android:paddingRight="5dp"></ImageView>
    </LinearLayout>
</FrameLayout>

我希望徽标(标识为logo)占据屏幕的前30%。 FrameLayout占据了屏幕底部的30%,中间有两个按钮(包含在ID为buttons的ScrollView中)和三个选项按钮,它们应该位于FrameLayout的右侧(但对于某些人来说)因为它在左侧)垂直对齐。 android:layout_weight无法解决我的问题,因为我希望这些视图与屏幕成比例。那么我的问题有一个优雅的解决方案,还是我必须做一些棘手的魔术?

1 个答案:

答案 0 :(得分:0)

想出来。毕竟我确实必须使用layout_weight属性。我必须将父级weightSum属性设置为1,然后将其所有子元素设置为layout_weight,使其与上述weightSum成比例。例如,如果子元素必须是父级高度的50%,我将其layout_weight设置为0.5,将其layout_height属性设置为0dp。