当我动态更改 FrameLayout 的子项的可见性时,我遇到了问题:
FrameLayout 由一个ScrollView
始终可见的简单元素和一个RelativeLayout
表示搜索栏的简单元素组成,该搜索栏默认情况下已消失,但如果用户按下操作栏上的按钮,则可以将其设置为动态可见。
因此,当用户按下操作栏按钮并且搜索栏为GONE
时,没有问题,搜索栏看起来就像它必须的那样。但是当搜索栏VISIBLE
不可能让她消失。我不知道为什么,因为GONE
当我在日志中显示它时,栏的状态设置得很好,但就像FrameLayout
没有刷新一样。
有人知道这个问题或有我的解决方案吗?
有代码:
....
<FrameLayout
android:id="@+id/frame_layout_movie_detail"
android:layout_below="@+id/movie_actionbar">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
....
<ImageView
android:id="@+id/iv_movie_detail_poster"
android:scaleType="fitCenter"
android:src="@android:drawable/ic_menu_report_image" />
....
</RelativeLayout>
</ScrollView>
<include
android:id="@+id/include_search_bar_movie"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
layout="@layout/search_bar" />
</FrameLayout>
....
search_bar.xml:
<RelativeLayout
<EditText />
<ImageButton />
</RelativeLayout>
显示和隐藏搜索栏的代码:
private void onDisplaySearchBar() {
if (search_bar.getVisibility() == View.GONE)
search_bar.setVisibility(View.VISIBLE);
else
search_bar.setVisibility(View.GONE);
search_bar.invalidate();
}
谢谢