这是原始布局:http://prntscr.com/bxods5
它的XML:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="10">
<Button
android:id="@+id/editBtn"
style="?android:attr/buttonStyleSmall"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_column="2"
android:layout_weight="2"
android:onClick="editEvent"
android:text="EDIT" />
<TextView
android:id="@+id/attendingEventInListviewRow"
android:layout_width="0dp"
android:layout_weight="6"
android:layout_height="wrap_content"
android:layout_column="38"
android:height="30sp"
android:tag="Events2goName"
android:text="Events2go"
android:textColor="#000000"
android:textSize="22sp"
android:textStyle="normal"
android:layout_gravity="right"
/>
<Button
android:id="@+id/cancel_arrive"
style="?android:attr/buttonStyleSmall"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="36dp"
android:layout_column="37"
android:layout_gravity="right"
android:onClick="selectCancelArrive"
android:text="Nope" />
</TableRow>
</TableLayout>
问题是,并非所有用户都可以编辑,因此对于某些用户,“编辑”按钮会消失,如下所示:
if(resource==R.layout.attending_listview_row) {
eventName = (TextView) view.findViewById(R.id.attendingEventInListviewRow);
cancelArrive = (Button) view.findViewById(R.id.cancel_arrive);
editBtn=(Button)view.findViewById(R.id.editBtn);
editBtn.setVisibility(View.GONE);
}
if (myEvent != null) {
if (myEvent.getOwner()== LocalDataBase.getCurrentUser()) {
editBtn.setVisibility(View.VISIBLE);
}
我仍然希望“NOPE”按钮和Events2Go文本视图留在他们的位置,但实际发生的是:http://prntscr.com/bxoggo
让他们坚持到位的最佳方式是什么?
修改
现在我知道问题是“GONE”和“INVISIBLE”之间的区别。
答案 0 :(得分:3)
我想现在你正在隐藏editBtn,就像这样
editBtn.setVisibility(View.GONE);
将此更改为
editBtn.setVisibility(View.INVISIBLE);
让我知道它是否有效,如果不能检查
答案 1 :(得分:0)
使用RelativeLayout。尝试
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/cancel_arrive"
android:orientation="horizontal">
<Button
android:id="@+id/editBtn"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:onClick="editEvent"
android:text="EDIT" />
<TextView
android:id="@+id/attendingEventInListviewRow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:height="30sp"
android:tag="Events2goName"
android:text="Events2go"
android:textColor="#000000"
android:textSize="22sp"
android:textStyle="normal"
android:layout_gravity="right"
/>
</LinearLayout>
<Button
android:id="@+id/cancel_arrive"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_alignParentRight="true"
android:onClick="selectCancelArrive"
android:text="Nope" />
</RelativeLayout>