我在这里发布了questions中的一些内容,但我没有得到我的问题的明确答案。使用单位dp会照顾物理屏幕尺寸吗?我已经将单位dp用于我的所有视图,并且我已经尝试使它们的大小相对。但即使这样,我也必须给它们中的一些提供绝对大小。该应用程序将在4英寸和5英寸屏幕上运行相同。这是结构:
这是我的XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="400dp" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_above="@+id/relativeLayout2"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/left" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher" />
<ImageButton
android:id="@+id/imageButton6"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/right" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:id="@+id/rel2"
android:layout_height="350dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/relativeLayout1" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:src="@drawable/lc" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="wrap_content"
android:layout_height="280dp"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/linearLayout1"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView3"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginLeft="120dp"
android:layout_marginTop="140dp"
android:src="@drawable/untitled" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/linearLayout2"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="64dp"
android:src="@drawable/lc" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
>
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/left" />
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignBottom="@+id/imageButton1"
android:layout_alignParentRight="true"
android:src="@drawable/right" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
</LinearLayout>
提前致谢....
答案 0 :(得分:4)
您可以使用 values / dimens.xml
如下所示(例如:所有设备的3dp)
创建values / dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="three">3dp</dimen>
</resources>
创建值-sw360dp / dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="three">3.375dp</dimen>
</resources>
创建值-sw480dp / dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="three">4.5dp</dimen>
</resources>
创建值-sw600dp / dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="three">5.625dp</dimen>
</resources>
创建值-sw720dp / dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="three">6.75dp</dimen>
</resources>
对于默认值文件夹,其 1
表示360dp - 1.125
适用于480dp - 1.5
表示600dp - 1.875
表示720dp - 2.25
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="wrap_content"
android:layout_height="@dimen/three"
android:layout_above="@+id/relativeLayout2"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
答案 1 :(得分:0)
不使用dp我们无法处理不同的屏幕尺寸。
为此您需要使用差异策略 你可以使用
android:layout_weight=".5"
如果设置android:layout_width="0dp"
,这将覆盖屏幕的一半
并且两个视图在一行
如果你设置height = 0dp,它将覆盖屏幕总高度的一半
注意强>
完全重量= 1;你可以像0.5 0.3等分开。
答案 2 :(得分:0)
我们不知道你的尺寸是多少,所以很难回答你的问题。但正如提到here
dp与屏幕尺寸无关,关于它的密度。你可以有2x 5英寸的屏幕。一个使用hdpi,第二个使用xxhdpi,您的布局将重新调整为可用的像素。
ldpi是mdpi的0.75倍尺寸
hdpi是mdpi的1.5倍尺寸
xhdpi是mdpi的2倍尺寸
答案 3 :(得分:0)
您可能需要采用不同的策略。首先,您可以使用维度文件为不同的屏幕密度定义布局或使用layout_weight。
我建议您查看Android开发人员指南,以设计不同屏幕尺寸的布局:https://developer.android.com/training/multiscreen/index.html