如何在android中扩展布局

时间:2012-02-06 20:15:35

标签: android layout

我开发了一个Android应用程序,但有时用户打电话给我并告诉我他们的设备布局不正确。原因是android运行在具有不同屏幕尺寸和密度的设备上。我尝试覆盖所有类型,但是当我纠正某些事情时,其他事情就会变得不正确。该死的!有没有办法只用一个drawable文件夹创建一个布局,并使用一些东西来扩展不同屏幕尺寸的布局?谢谢!! 这是我的主要xml布局的一个例子:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent" android:background="@drawable/sfondo">
    <LinearLayout android:id="@+id/linearLayout2"
        android:layout_height="wrap_content" android:layout_width="match_parent"
        android:orientation="vertical">
        <LinearLayout android:id="@+id/linearLayout1"
            android:layout_height="fill_parent" android:weightSum="1"
            android:layout_width="fill_parent" android:orientation="horizontal">
            <ImageView android:layout_height="wrap_content" android:id="@+id/imageView1"
                android:src="@drawable/trovachiavi_contatti" android:layout_width="wrap_content"
                android:layout_marginTop="15dp" android:layout_marginLeft="20dp"></ImageView>
            <ImageButton android:id="@+id/infoButton"
                android:background="@null" android:layout_height="47dp"
                android:layout_marginLeft="5dip" android:layout_weight="0.25"
                android:layout_marginTop="15dip" android:src="@drawable/info_mini"
                android:layout_width="47dp">
            </ImageButton>
        </LinearLayout>
    </LinearLayout>
    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <LinearLayout
            android:id="@+id/layoutGif"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
            <trova.chiavi.sd.GIFView
            android:layout_gravity="center" 
            android:layout_height="220dp" android:layout_width="210dp" android:id="@+id/GIFSingle"
            android:layout_marginLeft="40dp"></trova.chiavi.sd.GIFView>
        </LinearLayout>
        <LinearLayout
            android:id="@+id/layoutBanner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:orientation="vertical"
        >
            <TextView
                android:id="@+id/testoBanner"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Medium Text"
                android:layout_gravity="center"
                android:gravity="center"
                android:textAppearance="?android:attr/textAppearanceMedium" 
                android:layout_marginTop="10dp"
                android:textColor="@android:color/black"
                android:maxLines="2"/>

            <ImageView
                android:id="@+id/Banner"
                android:layout_width="match_parent"
                android:layout_height="144dp"
                android:layout_gravity="center"
                android:src="@drawable/box_codice" 
                android:layout_marginTop="5dp"
             />
        </LinearLayout>
    </RelativeLayout>
    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="1dp">
        <ImageButton
            android:id="@+id/avvia_cerca"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"
            android:src="@drawable/chiave"
            android:layout_gravity="center"/>
        <TextView
            android:id="@+id/testoRicercaSingle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@android:color/black" 
            android:layout_gravity="center"/>
    </LinearLayout>
</LinearLayout>

3 个答案:

答案 0 :(得分:2)

简短的回答是肯定的:我建议从这里开始:http://developer.android.com/training/multiscreen/index.html

特别是,在“支持不同的屏幕尺寸”页面下,请注意以下内容:

  

通过使用“wrap_content”和“match_parent”大小值而不是硬编码大小,您的视图或者仅使用该视图所需的空间,或者展开以分别填充可用空间。

需要稍微习惯一下逻辑,但是一旦你这样做就会很好。

答案 1 :(得分:1)

使用layoutSum和layoutWeight,您可以使用百分比调整所有内容的大小。我使用linearlayout和这个参数,我只为每个屏幕尺寸做一个布局! :)

答案 2 :(得分:1)

您可以使用weightSum属性。 在您的父布局中放置。

android:weightSum="100"

然后在儿童观点中提出

查看1

android:layout_weight="50"

查看2

android:layout_weight="50"

这将确保两个视图填满屏幕。这对我有用。

相关问题