我开发了一个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>
答案 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"
这将确保两个视图填满屏幕。这对我有用。