如何使按钮停留在android中的一个位置

时间:2012-07-29 03:48:04

标签: android android-layout

好的,这个问题一直困扰着我大约两个星期,而且我已经完成了所有的研究,我仍然无法弄清楚这一点。我有一个饼图形式的6个按钮。当我在XML中进行布局时,我可以让它们看起来很好。

view I want to achieve

当我将其更改为平板电脑尺寸或其他尺寸屏幕时,我的所有按钮都移动并且看起来很糟糕。

bad view

如何在任何屏幕尺寸上固定这些按钮?我知道我必须在approriate文件夹中有不同的图像大小,我打算这样做,但我需要知道是否有办法将它们锁定在XML文件中的某个位置或我需要做什么使这项工作正常。一如既往,非常感谢任何和所有的帮助,如果我对我的问题不够清楚,我会回答任何问题。致谢

这是我的XML

 <RelativeLayout 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="@drawable/mainback" >

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginLeft="25dp"
    android:background="@drawable/ipadcollegesm" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/button1"
    android:layout_alignRight="@+id/button1"
    android:layout_marginBottom="92dp"
    android:background="@drawable/ipadmusicsm" />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/button2"
    android:layout_marginLeft="5dp"
    android:layout_toRightOf="@+id/button1"
    android:background="@drawable/ipadfamilysm" />

<Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button3"
    android:layout_alignTop="@+id/button1"
    android:background="@drawable/ipadyouthsm" />

<Button
    android:id="@+id/button5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button4"
    android:layout_below="@+id/button3"
    android:layout_marginTop="14dp"
    android:background="@drawable/ipadlinkssm" />

<Button
    android:id="@+id/button6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button5"
    android:layout_alignBottom="@+id/button5"
    android:layout_toLeftOf="@+id/button4"
    android:background="@drawable/ipadpodcastsm" />

 </RelativeLayout>

1 个答案:

答案 0 :(得分:2)

您为每个按钮提供了固定的dp,不同的设备具有不同的分辨率。

为了使这项工作在多个工作量最少的设备上,我建议添加另一个相对布局作为根,并将重力设置为中心。这样,布局始终位于屏幕的中心。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:background="@drawable/mainback">
   <RelativeLayout 
   android:layout_width="wrap_content"
   android:layout_height="wrap_content">

      *** Your buttons would be here ***

    </RelativeLayout>
</RelativeLayout>

另一种方法是为每个屏幕大小设置一个尺寸文件,但上面可能是最简单的方法。