2017-04-03 58 views
0

我正在制作一个基本的应用程序,该应用程序获得了在应用程序启动时显示的警报。这个警报已经得到了一个WebView,它几乎覆盖了整个屏幕。以下是我想到的问题。在Android中调整警报的尺寸

  1. 现在是否可以调整此警报的尺寸?

  2. WebView中alert中的url设置为'http://www.google.com'假设某些用户正在使用我的应用程序,现在我希望他们(用户)在警报中看到不同的网页,那么如何更改url没有他们(用户)更新应用程序,我该怎么做?

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(); 

    } 
} 

回答

0

是的,你可以设置尺寸此警告对话框,通过使用自定义布局为警告对话框
请详细说明您的第二点。

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; 
     } 
    } 
} 

希望它帮助。

干杯!

+0

感谢您的回答,但即使我更改了自定义对话框xml文件中的'layout_width'和'layout_height',为什么警报对话框几乎覆盖整个屏幕 – 8hubham

+0

由于XML先设置视图,然后再设置lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT;动态设置维度。如果您按照您的要求更改尺寸。它会工作。 –

+0

如何动态设置尺寸? – 8hubham