【问题标题】:Android Button Alignment in XML offXML中的Android按钮对齐关闭
【发布时间】:2013-12-24 10:56:21
【问题描述】:

我正在使用相对布局,我试图在中心左侧放置一个 25dp 的按钮,在其右侧放置一个 25dp 的按钮。我在 CenterHorizo​​ntal 放置了一个锚点,然后对齐按钮。但他们不会在他们想的地方对齐。两者都在锚点的左侧结束。如果我更改 alignvalue,左边的不会移动,右边的移动,但它仍然偏离大约 150dp。 代码(我已经删除了这段代码中间的 textViews 和 EditTexts 以使其更短):

    <ScrollView    
      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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#00FF00"
    android:fadeScrollbars="true">
    <RelativeLayout 

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:context=".MainActivity" >



    <View
        android:id="@+id/mCenterAnchor"
        android:layout_centerHorizontal="true"
        android:layout_width="1dp"
        android:layout_height="1dp"
        android:layout_below="@+id/etAnnonsPris"
        />

    <Button
        android:id="@+id/knapp_spara"
        android:layout_width="100sp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etAnnonsPris"
        android:layout_marginTop="29dp"
        android:layout_toLeftOf="@+id/mCenterAnchor"
        android:layout_marginRight="25dp"
        android:text="@string/knapp_spara" />

    <Button
        android:id="@+id/knapp_visa"
        android:layout_width="100sp"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/mCenterAnchor"
        android:layout_marginLeft="25dp"
        android:layout_alignBaseline="@+id/knapp_spara"
        android:text="@string/knapp_visa" />

</RelativeLayout>
</ScrollView>

图片:http://i.stack.imgur.com/k2QQv.png

【问题讨论】:

  • 最简单的事情可能是将这两个按钮嵌套在一个布局中。
  • ScrollView中不是不可能有多个布局吗?
  • 试试看就知道了?我不知道。我不是 Android 大师……我讨厌处理 Android 布局……
  • 呵呵,这里也一样。 =) 我误解了 ScrollView- 规则,所以你给出的解决方案会起作用。感谢您的帮助!

标签: android xml layout alignment


【解决方案1】:

尝试使用 LinearLayout 或 RelativeLayout 包装这两个按钮:

<ScrollView    
      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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#00FF00"
    android:fadeScrollbars="true">
    <RelativeLayout 

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:context=".MainActivity" >



    <RelativeLayout
        android:id="@+id/mCenterAnchor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/etAnnonsPris">

        <Button
            android:id="@+id/knapp_spara"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_marginTop="29dp"
            android:layout_marginRight="25dp"
            android:text="@string/knapp_spara" />

        <Button
            android:id="@+id/knapp_visa"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/knapp_spara"
            android:layout_marginLeft="25dp"
            android:layout_alignBaseline="@+id/knapp_spara"
            android:text="@string/knapp_visa" />
    </RelativeLayout>

</RelativeLayout>
</ScrollView>

【讨论】:

  • 成功了。谢谢!但我不应该那样做,对吧?他们不应该按照我从一开始就希望他们对齐吗? (-我是一个javaRookie,正在努力学习,我想知道我是否做错了什么(如果是,是什么),或者是否是一些小故障)
  • Shouldn't they be aligning as I wanted them to from the beginning? 是的,我认为是这样,但是将事物分组然后将它们放置在我们想要的位置更合适。最简单的方法甚至是使用 LinearLayout。我不知道为什么您的解决方案不起作用。
  • 请始终标记解决了您的问题的任何响应,以便将线程正确标记为“已回答”。
  • 哦,对不起! -我忘了。 -完成 =)
【解决方案2】:

你不需要为它们设置所有属性 android:layout_below="@+id/etAnnonsPris"

因为你使用的是RelativeLayout,所以只要设置相对位置就可以了:

<View
    android:id="@+id/mCenterAnchor"
    android:layout_centerHorizontal="true"
    android:layout_width="1dp"
    android:layout_height="1dp"
    />

<Button
    android:id="@+id/knapp_spara"
    android:layout_width="100sp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/etAnnonsPris"
    android:layout_marginTop="29dp"
    android:layout_toLeftOf="@+id/mCenterAnchor"
    android:layout_marginRight="25dp"
    android:text="@string/knapp_spara" />

<Button
    android:id="@+id/knapp_visa"
    android:layout_width="100sp"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/mCenterAnchor"
    android:layout_marginLeft="25dp"
    android:text="@string/knapp_visa" />

【讨论】:

  • toRightOf 只表示水平位置,不表示垂直位置。如果我不放 layout_below 或 alignBaseline,按钮会被放在布局的顶部。?
  • 你测试过这个方法吗?你想把它们放在布局的中心吗?如果是这样,你可以为 View(@+id/mCenterAnchor) 设置属性 centerInParent="true",两个按钮和我建议的一样
  • 是的,我试过了。不,我不希望他们居中。我希望它们在中心右侧 25dp 和中心左侧 25dp。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 2016-03-26
  • 2014-02-27
相关资源
最近更新 更多