如何在不使用嵌套布局的情况下将复选框置于 EditText 下方居中?

发布于 2024-11-16 07:44:07 字数 1652 浏览 3 评论 0原文

在下面的屏幕截图中,复选框未在上面的编辑文本下方居中。如何使复选框居中,使其位于编辑文本正下方居中?  
 
在此处输入图像描述

我用来生成上述 UI 的布局是:

Layout XML

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

<TextView
    android:id="@+id/textView1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"

    android:padding="5dip"
    android:gravity="center"

    android:text="text 1"/>

<EditText
    android:id="@+id/editText1"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_toRightOf="@+id/textView1"
    android:layout_alignTop="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"

    android:padding="5dip"

    android:gravity="center"
    android:inputType="number"
    android:text="1"/>

<CheckBox
    android:id="@+id/checkBox"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_below="@+id/editText1"
    android:layout_toRightOf="@+id/textView1"

    android:text="check"/>
</RelativeLayout>

Things ,我已经尝试过 CheckBox 小部件,但没有成功:

  1. android_layoutAlignRight 与 EditText 小部件。

  2. `android:layout_gravity="center_horizo​​ntal" 相对布局

我知道我可以通过将 CheckBox 嵌套在另一个相对布局中并使用来实现“居中” android:layout_gravity="center" 在内部相对布局上,但我更喜欢避免嵌套布局的解决方案。

有什么建议吗?谢谢。

In the screenshot below, the checkbox is not centered below the edittext above. How can I center the checkbox so that it is centered right below the edittext?
 
 
enter image description here

The layout I am using to generate the above UI is:

Layout XML

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

<TextView
    android:id="@+id/textView1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"

    android:padding="5dip"
    android:gravity="center"

    android:text="text 1"/>

<EditText
    android:id="@+id/editText1"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_toRightOf="@+id/textView1"
    android:layout_alignTop="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"

    android:padding="5dip"

    android:gravity="center"
    android:inputType="number"
    android:text="1"/>

<CheckBox
    android:id="@+id/checkBox"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_below="@+id/editText1"
    android:layout_toRightOf="@+id/textView1"

    android:text="check"/>
</RelativeLayout>

Things, I have already tried on the CheckBox widget with no success:

  1. android_layoutAlignRight with the EditText widget.

  2. `android:layout_gravity="center_horizontal" on the relative layout

I know I can achieve the 'centering' by nesting the CheckBox in another relative layout and using android:layout_gravity="center" on the inner relative layout but I would prefer a solution that avoids nested layouts.

Any suggestions? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

究竟谁懂我的在乎 2024-11-23 07:44:07

我认为这是不可能的,除非您想向左侧的复选框添加填充,以便它移动到编辑文本的中心。您可以这样做,但不建议这样做。

I dont't think that is possible unless you want to add padding to the checkbox on the left so it moved to the center of the edittext. You can do it, but that is not advisable.

惯饮孤独 2024-11-23 07:44:07

我猜你想要框和文本居中?如果将复选框的重力设置为居中并使用填充父项作为宽度,则可以仅将文本居中。但它的中心仍然会偏离 editText1,因为 Box 本身会占用中心的总宽度。

如果您使用自定义图形切换按钮,那么您可以通过使用 .9 文件轻松完成您想要的任务,并且从图形角度来说,整体看起来可能会更好(相同的重力:中心,宽度:从上面填充父级)

否则我认为您必须筑巢。

I'm guessing you want the box and the text centered? If you set the gravity to the Checkbox to center and use fill parent for width then you can Center just the text. But the Center on it will still be off from the editText1 because the Box itself is going to eat into the total width to center.

If you use a custom graphic toggle button instead then you could easily accomplish what you want by using a .9 file and would probably look better overall graphically speaking (same Gravity: Center, Width: Fill Parent from above)

Otherwise I think you have to nest it.

绅士风度i 2024-11-23 07:44:07

当您使用RelativeLayout时,请尝试

android:layout_centerHorizontal="true"

“Ok”,然后您可以按如下方式使用TableLayout:

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

<TableRow>

<TextView
    android:id="@+id/textView1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" 
    android:padding="5dip"          
    android:text="text 1"/>

<EditText
    android:id="@+id/editText1"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"      
    android:padding="5dip"      
    android:gravity="center"                
    android:inputType="number"
    android:text="1"/>

   </TableRow>

   <TableRow>

  <View/> 

<CheckBox
    android:id="@+id/checkBox"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal"                  
    android:text="check"/>

 </TableRow></TableLayout>

空节点是故意的黑客攻击,以强制复选框进入“列”1而不是列0。

这给出了以下内容:

在此处输入图像描述

As you're using a RelativeLayout, try

android:layout_centerHorizontal="true"

Ok, then you can use the TableLayout as follows:

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

<TableRow>

<TextView
    android:id="@+id/textView1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" 
    android:padding="5dip"          
    android:text="text 1"/>

<EditText
    android:id="@+id/editText1"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"      
    android:padding="5dip"      
    android:gravity="center"                
    android:inputType="number"
    android:text="1"/>

   </TableRow>

   <TableRow>

  <View/> 

<CheckBox
    android:id="@+id/checkBox"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal"                  
    android:text="check"/>

 </TableRow></TableLayout>

The empty node is an intentional hack, to force the check box into 'column' 1 rather than column 0.

This gives the following:

enter image description here

淡淡の花香 2024-11-23 07:44:07

我找到了一个非常简单的解决方案,即使它需要使用 RelativeLayout

    <RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <CheckBox 
        android:id="@+id/remember_settings"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="12sp"
        android:textColor="#666666"
        android:text="@string/remember_settings"/>

</RelativeLayout>

在上述代码中, layout_widthlayout_centerInParent 都在CheckBox 必须根据上面的示例进行设置:否则,它将无法工作。

另外,如果RelativeViewparent设置为填充整个屏幕,则可以将RelativeView的layout_width设置为ma​​tch_parent ,否则必须设置为fill_parent

希望这对任何人都有帮助,因为我自己也一直在努力解决这个问题。

I found a pretty simple solution to this, even though it requires using a RelativeLayout:

    <RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <CheckBox 
        android:id="@+id/remember_settings"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="12sp"
        android:textColor="#666666"
        android:text="@string/remember_settings"/>

</RelativeLayout>

In the code as stated above, both layout_width and layout_centerInParent in the CheckBox must be set accordingly to the example above: otherwise, it won't work.

Additionally, if the parent of the RelativeView is set to fill the entire screen, you can set the layout_width of the RelativeView to match_parent, otherwise it must be set to fill_parent.

Hope this helps for anyone out there, as I have been struggling quite a bit with it myself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文