2

当我动态更改 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();
    }

谢谢

4

0 回答 0