【问题标题】:Can you center a Button in RelativeLayout?你可以在RelativeLayout中居中一个按钮吗?
【发布时间】:2010-09-20 01:46:25
【问题描述】:

我正在尝试使按钮在相对布局中居中,这可能吗?我已经尝试过重力和方向功能,但它们什么也没做。

【问题讨论】:

  • 语言?框架?操作系统?
  • @Arnold Spence:你比我快 24 秒 :)
  • 抱歉,这是我第一次使用 Stack Overflow。是的,我正在为 Android 开发。 =)
  • 没有问题。正确的标签会更快地引起正确的人的注意。固定:)
  • +1 给 Arnold Spence 的体贴。 SO上的一些人会因为“新”而口头破坏OP。

标签: android layout


【解决方案1】:

试试

android:layout_centerHorizontal="true"

正是这样,它对我有用:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#ff0000">

    <Button
        android:id="@+id/btn_mybutton"
        android:layout_height="wrap_content"
        android:layout_width="124dip"
        android:layout_marginTop="5dip"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

【讨论】:

  • 如果你的宽度有 match_parent,我就不工作了。
  • 如果你的宽度有 match_parent,它已经水平居中了。
【解决方案2】:

您可以使用 CENTER_IN_PARENT 进行相对布局。

android:layout_centerInParent="true" 添加到要在RelativeLayout 中居中的元素

【讨论】:

  • 水平和垂直居中,'bout layout_centerHorizo​​ntal=true
【解决方案3】:

Arcadia,试试下面的代码。有几种方法可以获得您正在寻找的结果,这是更简单的方法之一。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:gravity="center">

    <Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Centered Button"/>
</RelativeLayout>

设置 RelativeLayout 本身的重力会影响放置在其中的所有对象。在这种情况下,它只是按钮。当然,您可以在此处使用任何重力设置(例如 center_horizo​​ntal、top、right 等)。

您也可以使用以下代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

    <Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Centered Button"
        android:layout_centerInParent="true"/>
</RelativeLayout>

【讨论】:

  • 谢谢。但是,如果我有多个按钮并且只想要一个居中的按钮,我该怎么做?第一个代码将在父 relativelayout 中居中。另外,我怎样才能将按钮置于其行的顶部?
  • 只使用第二个示例,并且仅将 centerInParent 添加到您想要居中的按钮。您还可以使用 centerHorizo​​ntal 和 layout_alignParentTop 将其与顶部对齐并水平居中。你到底想达到什么目的,我可以举一个更好的例子。
  • 我才刚刚开始学习 android 开发,并试图完全理解如何操纵事物来做我想做的事。基本上我想远离将事物与像素对齐,因为图片在不同的屏幕类型/分辨率上可能看起来非常不同。但是,当您使用重力命令时,一切都会跟随它。我尝试使用 ignoreGravity 禁用按钮的重力,但它没有用。这东西很棘手。
  • 是的,绝对可以。有很多方法可以做任何特定的布局。最好的方法是在你的脑海中勾勒出你想要的样子,然后从那里开始。这个快速教程也可能会有所帮助:developer.android.com/resources/tutorials/views/…
  • 是的,我实际上是在做那个教程。我正在阅读每个教程并学习如何完全操作它们,否则我将无法掌握每个教程的不同之处。
【解决方案4】:

总结

添加:

android:layout_centerInParent="true"

仅适用于RelativeLayout,如果还为视图设置了以下属性之一:

android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"

将子视图与父视图对齐。 “中心”基于您选择的对齐轴:

左/右 -> 垂直

顶部/底部 -> 水平

在视图中设置子项/内容的重力:

android:gravity="center"

如果没有对齐设置,无论如何都会在父视图中居中子级。可选,您可以选择:

<!-- Axis to Center -->
android:gravity="center_horizontal"
android:gravity="center_vertical"

<!-- Alignment to set-->
android:gravity="top"
android:gravity="bottom"
android:gravity="left"
android:gravity="right"
android:gravity="fill"
...

然后有:

android:layout_gravity="center"

将视图本身置于其父级的中心

最后你可以在父视图中添加以下属性:

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

【讨论】:

    【解决方案5】:

    在视图中使用属性android:centerInParent="true", 当您想在相对布局中居中视图时。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/main_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="NWE"
            android:textSize="30dp"/>
    </RelativeLayout>
    

    【讨论】:

      【解决方案6】:

      这很简单,不要将它与任何东西对齐

      <Button
          android:id="@+id/the_button"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content" 
          android:layout_centerInParent="true"
          android:text="Centered Button"/>
      

      【讨论】:

        【解决方案7】:

        要在其中一个方向居中对齐,请在子布局中使用 android:layout_centerHorizo​​ntal="true" 或 android:layout_centerVertical="true"

        【讨论】:

          【解决方案8】:

          这真的很容易。试试下面的代码,

          <RelativeLayout
              android:id="@+id/second_RL"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_below="@+id/first_RL"
              android:background="@android:color/holo_blue_bright"
              android:gravity="center">
          
              <Button
                  android:id="@+id/button"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="Button" />
          
          </RelativeLayout>
          

          【讨论】:

          • 这里不欢迎纯代码回答。尝试发布有关上述答案为何有效的更多详细信息。 :)
          • 感谢您的指导。我是新来的。
          【解决方案9】:

          很简单,只需使用Android:CenterInParent="true"水平和垂直居中,或使用Android:Horizontal="true"水平居中Android:Vertical="true"

          并确保您在 RelaytiveLayout 中编写所有这些

          【讨论】:

            【解决方案10】:

            删除任何对齐方式,如 android:layout_alignParentStart="true" 和 添加 centerInParent 对我有用。如果“对齐”保持不变,则 centerInParent 不起作用

            【讨论】:

              【解决方案11】:

              您必须将其对齐到父视图的左侧或右侧

              在使用android:centerInParent="true" 代码时不要使用这些:-

              android:layout_alignParentLeft="true"

              android:layout_alignParentLeft="true"

              android:layout_alignRight=""

              等等。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-10-17
                • 2016-07-18
                • 1970-01-01
                • 1970-01-01
                • 2021-07-31
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多