我有两个视图,一个是按钮,另一个是LinearLayout
。
当我设置View.GONE
然后再设置为View.VISIBLE
时,视图将不会再次显示
这种机制在过去是有效的。
android:id="@+id/selector_controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@drawable/shape_round_white_1"/>
<include
android:id="@+id/actions_container"
android:layout_width="match_parent"
android:layout_height="48dp"
layout="@layout/wait_request_accept_panel"
android:visibility="visible"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@id/selector_controls"
android:layout_alignEnd="@id/selector_controls"
android:layout_alignLeft="@id/selector_controls">
现在......我想要的是切换是wait_request_accept_panel
里面的元素这是布局文件,我想在其中切换元素..
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<RelativeLayout
android:id="@+id/wait_container"
android:visibility="invisible"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/shape_round_white_1">
<!-- Other view elements -->
</RelativeLayout>
<Button
android:id="@+id/btnAccept"
android:layout_width="match_parent"
android:layout_height="48dp"
style="@style/H18b"
android:visibility="visible"
android:background="@drawable/shape_round_white_1"
android:text="@string/str_accept"
android:layout_alignParentTop="true"/>
</RelativeLayout>
正如你可以看到的那样,基本上有两个元素wait_container
在用户等待时显示,而按钮btnAccept
只改变状态一次:一个在原始状态,即< strong> wait_container 是GONE,第一次看到按钮Button
。当我点击btnAccept
时,btn变为 GONE ,等待容器变为可见
这是编程的命令:
switch (req.getType()) {
case REQ: // this is the initial flow
waitContainer.setVisibility(View.GONE);
acceptBtn.setVisibility(View.VISIBLE);
break;
case ACCEPT: // after hit the accept btn it toggles the two views
acceptBtn.setVisibility(View.GONE);
waitContainer.setVisibility(View.VISIBLE);
break;
}
waitContainer = (RelativeLayout) view.findViewById(R.id.wait_container);
acceptBtn = (Button) view.findViewById(R.id.btnAccept);
cancelBtn = (Button) view.findViewById(R.id.btnCancel);
需要考虑的事情是包含waitContainer
和acceptBtn
的事实,它们来自另一个xml文件,我这样做是因为我想重用代码,但在这一刻并非如此很重要,因为当前屏幕是唯一使用wait_request_accept_panel.xml
文件的屏幕。
视图始终存在,但是当片段开始时,它的alpha通道被动画修改,我错误地将viewContainer
作为参数发送到动画方法,我将动画方法设置为动画的alpha通道。 / p>
答案 0 :(得分:2)
您可以尝试使用getVisibility ()
。
返回此视图的可见性状态。
if(waitContainer.getVisibility()== View.GONE)
{
acceptBtn.setVisibility(View.GONE);
waitContainer.setVisibility(View.VISIBLE);
}
答案 1 :(得分:2)
在应用 ViSIBLE / GONE 之后检查可见性视图
if(waitContainer.getVisibility()== View.GONE)
{
waitContainer.setVisibility(View.VISIBLE);
}else{
waitContainer.setVisibility(View.GONE);
}