我有两个线性布局,主要布局包含两个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>
答案 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);
}
});
}
使用此方法,您无需直接更改按钮位置。这更像是一个小解决方法。您总是有两个按钮,只能更改其可见性。