Mic*_*hal 9 android android-layout android-fragments
它是如何工作的?我有如下布局:
<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>
Run Code Online (Sandbox Code Playgroud)
注意第二个片段有android:visibility="gone",实际上它在屏幕上不可见.但是这段代码:
boolean bothVisible = firstFrag.isVisible() && secondFrag.isVisible();
Run Code Online (Sandbox Code Playgroud)
回报true,这是我没想到的.我想知道使用android:visibility是否正确,因为我在文档中找不到任何相关信息.
根据片段源,isVisible定义为:
final public boolean isVisible() {
return isAdded() && !isHidden() && mView != null
&& mView.getWindowToken() != null &&
mView.getVisibility() == View.VISIBLE;
}
Run Code Online (Sandbox Code Playgroud)
即,它附加到活动,它不被隐藏(通过FragmentTransaction.hide),视图被膨胀,视图附加到窗口,并且片段的内部视图是View.VISIBLE.
我相信问题在于,为了给你的片段充气,系统会创建一个布局来保存Fragment的视图.这是您要设置View.GONE的视图,而不是Fragment创建的内部视图.
我可能会建议你改变你的状况:
findViewById(R.id.result_list_fragment).getVisibility() == View.VISIBLE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14215 次 |
| 最近记录: |