片段android:xml布局定义中的可见性

前端之家收集整理的这篇文章主要介绍了片段android:xml布局定义中的可见性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
它是如何工作的?我有如下布局:
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <fragment
        android:id="@+id/search_form_fragment"
        android:name="FragmentClass"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <fragment
        android:id="@+id/result_list_fragment"
        android:name="FragmentClass"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />
</LinearLayout>

注意第二个片段有android:visibility =“gone”,实际上它在屏幕上不可见.但是这段代码

boolean bothVisible = firstFrag.isVisible() && secondFrag.isVisible();

返回true,这是我没想到的.我想知道是否使用android:visibility是正确的,因为我在文档中找不到任何关于它的信息.

解决方法

根据 Fragment source,isVisible定义为:
final public boolean isVisible() {
    return isAdded() && !isHidden() && mView != null
            && mView.getWindowToken() != null && 
               mView.getVisibility() == View.VISIBLE;
}

即,它被附加到活动,它不被隐藏(通过FragmentTransaction.hide),视图被膨胀,视图被附加到窗口,并且片段的内部视图是View.VISIBLE.

我认为问题在于,为了给你的片段充气,系统会创建一个布局来保存片段的视图.您正在设置View.GONE,而不是Fragment创建的内部视图.

我可能会建议你改变你的状况:

findViewById(R.id.result_list_fragment).getVisibility() == View.VISIBLE

猜你在找的Android相关文章