单击后更改webview的大小

时间:2014-03-07 06:45:39

标签: android dynamic webview

我想动态创建web view,然后点击将网页视图的大小更改为fill_parent,再次点击后,它应恢复为我自定义设置的先前尺寸。到目前为止,我已经能够动态创建一个Web视图,并尝试在点击时传递新参数,但会发生的情况是webview覆盖整个屏幕,并且在第二次点击后不会恢复到之前的大小。

感谢任何帮助。

我目前的代码与此类似。

public class MainActivity extends Activity {
    RelativeLayout layout;
    Boolean flag=true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        layout=(RelativeLayout)findViewById(R.id.test);

        TextView textDynamic = new TextView(this);
        textDynamic.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        textDynamic.setText("Hello Android");
        layout.addView(textDynamic); 


        final WebView web = new WebView(this);
        web.getSettings().setJavaScriptEnabled(true);

            final RelativeLayout.LayoutParams webViewParams = new RelativeLayout.LayoutParams(
                    300, 100);
            webViewParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);


            final RelativeLayout.LayoutParams webViewNewParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

        web.loadData("<script type=\"text/javascript\" src=\"http://myurl.com/test.php\"></script>", null, null);
//RelativeLayout.LayoutParams webViewParams = new RelativeLayout.LayoutParams(
        //      300, 100);
    //  final RelativeLayout.LayoutParams webViewNewParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);


        layout.addView(web, webViewParams);
        web.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View arg0, MotionEvent arg1) {
            if(arg1.getAction()==MotionEvent.ACTION_UP)
            {
            Log.e("test", "msg");
            layout.removeView(web);
            //web.getSettings().setDefaultZoom(ZoomDensity.FAR);


            if (flag=true)
            {
                flag=false;
                web.getSettings().setLoadWithOverviewMode(true);
                web.getSettings().setUseWideViewPort(true);
                layout.addView(web, webViewNewParams);

            }
            else
            {
                flag=true;
                web.getSettings().setLoadWithOverviewMode(false);
                web.getSettings().setUseWideViewPort(false);
                //webViewParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                layout.addView(web, webViewParams);

            }
        //  web.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
        //web.setLayoutParams(webViewNewParams);
            //web.setLayoutParams(new RelativeLayout.LayoutParams(getWindowManager().getDefaultDisplay().getWidth(),getWindowManager().getDefaultDisplay().getHeight()));
        //web.setLayoutParams(new RelativeLayout.LayoutParams(getWindowManager().getDefaultDisplay().getWidth(),getWindowManager().getDefaultDisplay().getHeight()));
            }
            return false;

        }
    }); 

    }

}

3 个答案:

答案 0 :(得分:1)

这是正常运行的代码......

public class MainActivity extends Activity {

    RelativeLayout layout;
    boolean Expanded = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        layout = (RelativeLayout) findViewById(R.id.layout);

        final RelativeLayout.LayoutParams webViewParams = new RelativeLayout.LayoutParams(500, 250);
        webViewParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

        final RelativeLayout.LayoutParams webViewNewParams = new RelativeLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

        final WebView myBrowser = new WebView(this);

        myBrowser.loadUrl("https://www.google.co.in");

        layout.addView(myBrowser, webViewParams);
        myBrowser.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                if (arg1.getAction() == MotionEvent.ACTION_UP) {
                    if (Expanded) {
                        myBrowser.setLayoutParams(webViewParams);
                        Expanded = false;
                    } else {
                        myBrowser.setLayoutParams(webViewNewParams);
                        Expanded = true;
                    }
                }
                return false;
            }

        });

    }
}

答案 1 :(得分:0)

根据我的研究工作,Web视图无法调整大小。意味着增加Web视图的大小后,您无法再次减小大小。 see this for more info

答案 2 :(得分:0)

你的问题在这里...... 变化

if (flag=true) {

if (flag==true) {

休息将正常工作