以编程方式将layout_bellow属性字段更改为另一个字段

时间:2014-01-16 22:09:00

标签: android android-layout relativelayout textview

给出以下代码:

<RelativeLayout
    android:id="@+id/rel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textPersonalInfoEmpty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="20dp"
        android:hint="Edit to set your personal info"
        android:textSize="16sp"
        android:visibility="gone" />

    <EditText
        android:id="@+id/editName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="15dp"
        android:hint="Name"
        android:visibility="gone"
        android:textSize="16sp" />

    <Button
        android:id="@+id/insertGameId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/editName"
        android:layout_marginTop="20dp"
        android:text="Insert" />
</RelativeLayout>

TextView和EditText根据用户交互可见,并且两者永远不会同时显示。每次一个!

问题是第三个组件(Button)需要更改属性android:layout_below,具体取决于哪个组件可见。

我需要以编程方式进行此操作。

任何帮助?

2 个答案:

答案 0 :(得分:1)

对textview和edittext使用Relativelayout。而relativelayout的高度:wrap-content 然后给你的relativelayout提供一个id

然后将此行添加到按钮

的xml文件中
<Button

        android:layout_below="@id/RealtiveLayoutid" />

多数人

答案 1 :(得分:0)

首先,使用ToggleButton而不是Button。它可以包含您分配给它的所有属性。

接下来将其添加到ToggleButton:

<ToggleButton
   ....
   android:textOn="@string/ifTextView"
   android:textOff="@string/ifTextBox"
   android:onClick="onToggleClicked"
/>

然后这是活动

public void onToggleClicked(View v) {
    boolean on = ((ToggleButton) v).isChecked();

    if(on) {
        theTextView.setVisibility(View.VISIBLE);
        theTextBox.setVisibility(View.INVISIBLE);
    } else {
        theTextBox.setVisibility(View.VISIBLE);
        theTextView.setVisibility(View.INVISIBLE);
    }
}

请记住导入所需的类。