2017-04-03 116 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