保持按钮android之间的固定边距

时间:2014-03-01 19:14:42

标签: android android-layout

我正在开发一个应用程序,并有这样的情况: enter image description here

我有两个图像按钮,它们必须适合整个屏幕。 所以我使用了线性布局,并将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:

enter image description here

Galaxy Nexus 720x1280 xhdpi:

enter image description here

我的布局:

<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中查看预览一样)。屏幕尺寸也随之变得更加复杂。

1 个答案:

答案 0 :(得分:0)

使用dpmargin的与密度无关的点(padding)单位是保持所有设备大小绝对减少的最佳方法,如下所示:

android:layout_margin="20dp"

确保您对所有XML元素使用dp,并为所有文本使用sp