使用相对布局对齐元素

时间:2016-12-29 11:03:05

标签: android xamarin relativelayout

我的问题是我想保留像Buttons这样的3个元素,例如我使用RelativeLayout作为父级,使用LinearLayout作为其子级并给予android:weightSum="3"并添加了3个按钮作为其子级。我已经实现了我想要的UI。 但是,当其中一个Button Visibility状态消失时,就会遇到原始问题。元素不合适。

即使我隐藏一个按钮,其他两个需要调整,我怎么能实现。

如果有,请提供解决方案。

first image

secondimage

Respective Code

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent">
<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:weightSum="3.0">
<Button
                android:id="@+id/btn1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_weight="1.0"
                android:textColor="#ffffff"
                android:text="TAB1" />
            <Button
                android:id="@+id/btn2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:text="TAB 2"
                android:visibility="gone" />
            <Button
                android:id="@+id/btn3"
                android:layout_width="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:text="TAB 3" />
        </LinearLayout>
    </RelativeLayout>
</LinearLayout>

4 个答案:

答案 0 :(得分:0)

您不必设置android:weightSum属性,只需为每个孩子分配android:layout_weight=1

https://developer.android.com/guide/topics/ui/layout/linear.html

  

要创建一个线性布局,其中每个孩子在屏幕上使用相同的空间量,请将每个视图的android:layout_height设置为“0dp”(对于垂直布局)或者将每个视图的android:layout_width设置为“ 0dp“(用于水平布局)。然后将每个视图的android:layout_weight设置为“1”。

如果要定义最大权重总和,请使用android:weightSum如果未指定,则通过添加所有子项的layout_weight来计算总和。

代码示例:

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
       <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
       <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone"/>
       <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
</LinearLayout>

答案 1 :(得分:0)

您必须使用相对布局而不是线性布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="3">
<Button
    android:id="@+id/btnOne"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_weight="1"
    android:text="1"/>

<Button
    android:id="@+id/btnTwo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"        
    android:layout_weight="1"
    android:text="2"/>
<Button
    android:id="@+id/btnThree"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_weight="1"
    android:text="3"/>

如果你为第二个按钮设置了可见性,那么你可以实现这个

答案 2 :(得分:0)

或者您可以编程删除第二个按钮的文本并为此设置transperent背景,如下面的代码

constructor(props) {
  super(props)
  this.handleChange = this.handleChange.bind(this)
  this.state = {contents: 'initialContent'}
}

答案 3 :(得分:0)

android:visibility =&#34;隐藏&#34; 为中间视图设置此属性。 并确保您的子视图(即按钮)宽度设置为ASPxCheckBox。因为你正在使用重量宽度。

试试这个 -

DataItemTemplate