相对布局:如何在元素右侧剩余的空间中将视图居中?

3
我想把“跳过”按钮居中在剩余空间的右侧,靠近小安卓图标。我该如何在相对布局中实现这个效果?
以下是当前的XML代码:
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/min_touch_target_size"
    android:layout_alignParentBottom="true"
    android:background="@android:color/transparent"
    android:orientation="horizontal"
    >

    <ImageView
        android:src="@drawable/ic_android"
        android:id="@+id/circle_page_indicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />

    <Button
        android:text="SKIP"
        style="@style/intro_feature_ad_button_style.right_anchor"
        android:id="@+id/skip_button" />
</RelativeLayout>

你可以尝试使用 layout_alignparentright = true,设置 ems = 5 或将 gravity 设置为 center。 - Surender Kumar
1
android:gravity="center" 没有任何作用。 - ZakTaccardi
然后你可以使用线性布局,并对两个小部件设置权重。 - Surender Kumar
3个回答

3
将按钮包装在具有android:layout_alignParentEnd="true"android:layout_toEndOf="@+id/circle_page_indicator"FrameLayout中。按钮需要具有android:layout_gravity="center"

截图

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/min_touch_target_size"
    android:layout_alignParentBottom="true"
    android:background="@android:color/transparent" 
    >
    <ImageView
        android:src="@drawable/ic_android"
        android:id="@+id/circle_page_indicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" 
        />
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@+id/circle_page_indicator" 
        >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="skip"
            android:id="@+id/skip_button"
            android:layout_gravity="center" 
            />
    </FrameLayout>
</RelativeLayout>

你提供的很多代码都是多余的,但它确实让我找到了正确的答案。我只需要在按钮中添加 android:layout_alignParent_end="true" 就可以解决问题了。如果你把你的答案改成这个,我会接受它的。 - ZakTaccardi
如果使用android:layout_alignParentEnd="true",它并不是真正居中的。按钮将被拉伸到整个宽度。通过使用@style/intro_feature_ad_button_style.right_anchor,这一点就不容易被注意到了。您要求让按钮居中,我们应该保留我的答案,以防其他人阅读此问题时想要将按钮居中。 - ByteHamster
哎呀,你说得对!我本来希望避免嵌套另一个RelativeLayout的。 - ZakTaccardi
你可以在你的项目中使用 alignParentEnd,并且无论如何都可以接受我的答案,因为这可能是某个正在阅读此页面的人正在寻找的解决方案。 - ByteHamster
请查看我的新编辑答案 - 我认为这是最好的方法,因为它具有最少的开销。随意用它替换你的答案,这样我就可以接受你的答案了。 - ZakTaccardi
好的,我去除了开销并切换到FrameLayout。现在大部分与你的答案相匹配。 - ByteHamster

0

试试这个

    <RelativeLayout android:layout_width="match_parent" android:layout_height="@dimen/min_touch_target_size"
     android:layout_alignParentBottom="true"
     android:background="@android:color/transparent"
     android:orientation="horizontal" >
 <ImageView

         android:src="@drawable/ic_android"

         android:id="@+id/circle_page_indicator"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" android:padding="3dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> 
        <RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent">
        <Button 
        android:text="SKIP" 
        android:layout_centerInParent="true"
        style="@style/intro_feature_ad_button_style.right_anchor" android:id="@+id/skip_button" />
         </RelativeLayout>
         </RelativeLayout>

android:layout_centerInParent="true" 这段代码没有任何作用。 - ZakTaccardi

0

这个方法很有效。将 Button 包装在一个具有 android:layout_alignParentEnd="true"android:layout_toEndOf="@+id/circle_page_indicator" 属性的 FrameLayout 中。 Button 需要居中对齐。

完整代码如下:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/min_touch_target_size"
    android:layout_alignParentBottom="true"
    android:background="@android:color/transparent"
    >

    <ImageView
        android:src="@drawable/ic_android"
        android:id="@+id/circle_page_indicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@+id/circle_page_indicator"
        >
        <Button
            android:text="skip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/skip_button"
            android:layout_gravity="center"
            />
    </FrameLayout>
</RelativeLayout>

应该使用layout_alignParentEnd而不是layout_alignParent_end - ByteHamster
你的帖子中还有一个layout_alignParent_end :) - ByteHamster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接