单击后如何更改按钮的位置?

时间:2014-02-15 07:58:25

标签: android android-layout

我有两个线性布局,主要布局包含两个textviews和一个内部布局,其中包含一个按钮和textview ...我想改变我的内部布局按钮的位置,我希望在主要的最后一个textivew后面下面LinearLayout中.. 这是我的xml文件....

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Personal Information"
            android:textSize="30sp" />
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
        <TextView
                 android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Email" />

        <Button
            android:id="@+id/btnAddEmail"
            android:layout_width="93dp"
            android:layout_height="wrap_content"
            android:text="Add" />   
    </LinearLayout>
    <TextView 
        android:id="@+id/tvEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        />
    </LinearLayout>

</ScrollView>

3 个答案:

答案 0 :(得分:0)

一种解决方案是在另一个位置设置另一个隐形按钮,当你想“移动”按钮时,你可以使当前的按钮“不可见”并切换另一个按钮。

答案 1 :(得分:0)

就像alfasin所说,你的布局中有两个按钮。根据您的要求,将其中一个的可见性设置为GONE或INVISIBLE。 INVISIBLE只会隐藏按钮,但显示按钮所需的空间将被保留。 GONE将隐藏按钮,并且布局中占用的空间也将被删除。

btn.setVisibilty(View.GONE)
btn.setVisibilty(View.INVISIBLE)
btn.setVisibilty(View.VISIBLE)

如果您希望两者都触发相同的操作,则为两个按钮注册相同的单击侦听器。根据点击的按钮进行额外检查以切换可见性。

答案 2 :(得分:0)

在上一个TextView下方添加第二个按钮,并将其可见性设置为“已消失”。

XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Personal Information"
        android:textSize="30sp" />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Email" />

        <Button
            android:id="@+id/btnAddEmail"
            android:layout_width="93dp"
            android:layout_height="wrap_content"
            android:text="Add" />   
    </LinearLayout>
    <TextView 
        android:id="@+id/tvEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        />
    <Button
        android:id="@+id/btnNew"
        android:layout_width="93dp"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:visibility="gone" />   
</LinearLayout>

获取您的按钮,初始化您的OnClickListener并执行您的逻辑。然后切换两个按钮的可见性状态,您就完成了:

private Button mAddMail;
private Button mNewButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Inflate your layout
    setContentView(R.layout.activity_main);

    mAddMail = (Button) findViewById(R.id.btnAddEmail);
    mNewButton = (Button) findViewById(R.id.btnNew);

    mAddMail.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Do your logic
            // ....
            mAddMail.setVisibility(View.GONE);
            mNewButton.setVisibility(View.VISIBLE);
        }
    });
}

使用此方法,您无需直接更改按钮位置。这更像是一个小解决方法。您总是有两个按钮,只能更改其可见性。