我如何隐藏WebView?

时间:2010-11-03 11:16:30

标签: android webview

我需要在加载Web内容时隐藏WebVew。我尝试用其他视图来做这个:

<WebView
    android:scrollbars="none" 
    android:id="@+id/id_webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

<View
    android:visibility="gone"
    android:scrollbars="none" 
    android:id="@+id/id_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

当我想隐藏WebView时,我将View的可见性更改为“visible”(View.setVisibility(View.VISIBLE);)。但View不包含WebView,也没有隐藏。我需要在加载WebView时将视图放在前面。

1 个答案:

答案 0 :(得分:6)

虽然我发现这种方法很奇怪,但您应该检查这些视图的父容器。

如果是LinearLayout,难怪View不会覆盖WebView。 如果您想使用Layouts,请尝试使用RelativeLayout并相同地对齐元素,例如,添加到两个视图:

android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"

另一种变体(以及更正确的IMO)是使用ViewSwitcher或ViewFlipper。它使用showNext(),showPrevious()(在ViewFlipper中)和getNextView()(在ViewSwitcher中)方法在它的子节点之间切换。真的很容易实现和使用。查看一些例子。

快速提示:

<!-- ViewSwitcher or ViewFlipper -->
<ViewSwitcher

    android:id="@+id/view_switcher"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <View
        android:scrollbars="none" 
        android:id="@+id/id_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <WebView
        android:scrollbars="none" 
        android:id="@+id/id_webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</ViewSwitcher>

并且,在您的代码中:

// This will hide currently displayed and reveal next
((ViewSwitcher) findViewById(R.id.view_switcher)).getNextView(); 

// Or, in case of ViewFlipper:
// This will hide currently displayed and reveal next
((ViewFlipper) findViewById(R.id.view_switcher)).showNext();

两者之间的区别在于,Switcher只能有2个孩子,并且有一个工厂可以创建视图。

P.S。混合两位动画师,编辑后。