在android中调整警报的维度

时间:2017-04-03 17:00:13

标签: android android-alertdialog

我正在制作一个基本应用程序,它会在应用程序启动时显示警报。这个警报里面有一个WebView,它几乎涵盖了整个屏幕。以下是我的想法。

  1. 现在是否可以调整此提醒的尺寸?

  2. WebView in alert中的网址设置为' http://www.google.com'让我们说如果有些用户正在使用我的应用程序,现在我希望他们(用户)在警报中看到不同的网页,那么如何在不让他们(用户)更新应用程序的情况下更改网址,我该怎么办?它?

  3. MainActivity.java

    package com.example.android.two;
    
    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.WindowManager;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Button;
    import android.widget.EditText;
    
    import com.example.android.two.R;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final Dialog dialog = new Dialog(this);
    
            WebView wv = new WebView(this);
            wv.loadUrl("http:\\www.google.com");
            wv.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
    
                    return true;
                }
            });
    
            AlertDialog.Builder alert = new AlertDialog.Builder(this);
            alert.setTitle("Notification");
            alert.setView(wv);
            alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                }
            });
            alert.show();
    
        }
    }
    

2 个答案:

答案 0 :(得分:0)

是的,您可以使用提醒对话框的自定义布局设置此提醒对话框的维度。
请详细说明你的第二点。

答案 1 :(得分:0)

您可以使用自定义对话框布局,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <Button
            android:layout_width="60dp"
            android:layout_height="match_parent"
            android:text="GO"
            android:id="@+id/go"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/urlText"/>

        </LinearLayout>
    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <WebView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/web">

    </WebView>
    </ScrollView>
</LinearLayout>

我们将使用WindowManager.LayoutParams来调整尺寸,或者我们可以为上面的linearLayout设置高度和宽度。

活动代码将是:

import android.app.Dialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends AppCompatActivity {
    WebView wv;
    EditText url;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Dialog dialog = new Dialog(this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.custom_alert_dialog);
        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        lp.copyFrom(dialog.getWindow().getAttributes());
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.MATCH_PARENT;
        lp.gravity = Gravity.CENTER;
        url=(EditText) dialog.findViewById(R.id.urlText);
        wv=(WebView) dialog.findViewById(R.id.web);
        wv.setWebViewClient(new MyBrowser());
        wv.getSettings().setLoadsImagesAutomatically(true);
        wv.getSettings().setJavaScriptEnabled(true);
        wv.loadUrl("http://www.google.com");
        Button go=(Button)dialog.findViewById(R.id.go);
        go.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                wv.loadUrl("http://"+url.getText().toString());
            }
        });
        dialog.getWindow().setAttributes(lp);

        dialog.show();
    }

    private class MyBrowser extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}

希望它有所帮助。

干杯!