部分XML布局代码:
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="1">
<FrameLayout android:id="@+id/webViewLayout"
android:layout_width="fill_parent" android:layout_height="fill_parent"></FrameLayout>
</LinearLayout>
在XML中定义了一个FrameLayout,然后再Java代码中动态添加WebVeiw组件:FrameLayout webViewLayout = (FrameLayout) this.findViewById(R.id.webViewLayout);
WebView webView = new WebView(this);
webViewLayout.addView(webView);
之后想用ViewGroup类的removeView(View view)方法除去webView,使其在屏幕上不可见:webViewLayout.removeView(webView),但是执行了该方法后,webView依旧显示在屏幕上,被这个问题困扰了一下午,哪位高手指教指教???

解决方案 »

  1.   

    设置setVisibility(View.GONE);可以不?
      

  2.   

    removeView试试刷新一下layout,requestlayout之类的方法吧
      

  3.   

    这个方法试过了,WebView还是显示在屏幕上
      

  4.   


    rootLayout.startLayoutAnimation();
    webViewLayout.requestLayout();
    rootLayout.updateViewLayout(rootLayout, rootLayout.getLayoutParams());三个方法都试过了,都没有刷新效果啊,还有其他的方法吗
      

  5.   

    webview独立出来布局界面,设置gone应该没问题。
      

  6.   

    public class AndroidTest extends Activity {
    FrameLayout webViewLayout;
    WebView webView;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            webViewLayout = (FrameLayout) this.findViewById(R.id.webViewLayout);
            webView = new WebView(this);
            webViewLayout.addView(webView);
            
            Button btnRemove = (Button)findViewById(R.id.btnRemove);
            btnRemove.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    // TODO Auto-generated method stub
    webViewLayout.removeView(webView);
    }
            });
        }
    }main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"> <FrameLayout android:id="@+id/webViewLayout"
    android:layout_width="fill_parent"
    android:layout_height="200dip">
    </FrameLayout>
    <Button android:id="@+id/btnRemove"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Remove"/>
    </LinearLayout>
    这样是起作用的,点击Remove按钮时,webview就消失了。
      

  7.   

    如果FrameLaout上添加了多个WebView,用removeView就没效果了呢?
      

  8.   

    呵呵,那你怎么构造,给你说view独立出来,嵌入到framelayout用id操作visiblity为gone就行了,
      

  9.   

    因为要在FrameLayout中动态添加或删除多个WebView,在XML中定义不太现实吧
      

  10.   

    哦,有点意思,说实在的webview一个界面多搞几个这个,确实挺罕见的,如果小于5个,硬编码应ViewStub动态控制,不过removeView不成功是因为你没有获取到正确的view,你可以看下遍历layout的view,用viewgroup确定每个webview的索引 
      

  11.   

    所谓的动态就是在Java代码中实现的饿
      

  12.   

    不是没有获取正确的view,而是remove掉该view时候,视图没有刷新,把屏幕拖动一下才更新