我正在开发一个应用程序,并有这样的情况:
我有两个图像按钮,它们必须适合整个屏幕。 所以我使用了线性布局,并将layout_weight设置为1。 然而,你可以从我的草图中看到它们不是矩形的,所以右边的那个必须有负的左边距看起来像草图。但是图像是动态缩放的,因此边距量取决于屏幕尺寸。我试图为ldpi,mdpi,hdpi等创建倍增的dimen文件,但只看预览2 hdpi屏幕它看起来不一样。了解原始尺寸余量是否可以在所有屏幕上正确缩放?
此致
编辑: 我正在使用dp单位。但就像我说的那样,所有具有相同dpi的屏幕都不一样。 例如:
值-xhdpi / dimens.xml:
<resources>
<dimen name="button_margin">-23dp</dimen>
</resources>
Nexus 10 2560x1600 xhdpi:
Galaxy Nexus 720x1280 xhdpi:
我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/riderstabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<ImageView
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:checked="true"
android:layout_weight="1"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/btn1" />
<ImageView
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:layout_marginLeft="@dimen/button_margin"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/btn2" />
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/list"
android:background="@android:color/transparent"
android:layout_weight="7"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>
</LinearLayout>
编辑:
我发现还有另一类屏幕尺寸。
正如文件所述: 尺寸:小,普通,大和xlarge 密度:ldpi(低),mdpi(中),hdpi(高)和xhdpi(超高)[我认为还有xxhdpi,xxxhdpi和tvhdpi]。
所以我有2个按钮:第一个262x46,第二个404x46。 -26像素是完美匹配的第二个按钮的原始边距。 (所以总和是404 + 262-26 = 640)。
我发现了一些密度因素: ldpi - 0.75 mdpi - 1.0 hdpi - 1.5 xhdpi - 2.0 xxhdpi - 3.0 xxxhdpi - 4.0
但是当我例如猜测mdpi的右边距并且将它乘以hdpi的1.5时它没有正确缩放(就像在eclipse中查看预览一样)。屏幕尺寸也随之变得更加复杂。
答案 0 :(得分:0)
使用dp
和margin
的与密度无关的点(padding
)单位是保持所有设备大小绝对减少的最佳方法,如下所示:
android:layout_margin="20dp"
确保您对所有XML元素使用dp
,并为所有文本使用sp