2013-09-10 6 views
2

Я создаю приложение для Android. В этом приложении я использую диалоговое окно, чтобы отображать содержимое HTML, которое поступает со стороны . Я создал окно диалога, используя метод ниже.Динамическое изменение ширины окна приложения Android

private void displayDialogWindow(String html) { 

     // here I have created new dialog window 
     dialog = new Dialog(cordova.getActivity(), 
       android.R.style.Theme_NoTitleBar); 
     dialog.getWindow().getAttributes().windowAnimations = 
android.R.style.Animation_Dialog; 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setCancelable(true); 


     // creates a new webview to display HTML and attached to 
dialog to display 
     webview = new WebView(cordova.getContext()); 
     webview.setLayoutParams(new LinearLayout.LayoutParams(
       LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
     webview.setWebChromeClient(new WebChromeClient()); 
     webview.requestFocusFromTouch(); 

     final String mimeType2 = "text/html"; 
     final String encoding2 = "UTF-8"; 
     webview.loadDataWithBaseURL("", html, mimeType2, encoding2, ""); 
     dialog.setContentView(webview); 

     // get the screen size of the device 
     WindowManager wm = (WindowManager) ctx 
       .getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     int width = size.x; 
     int height = size.y; 

     // set appropriate sizes to the dialog window whether there is 
side menu or not 
     lp.copyFrom(dialog2.getWindow().getAttributes()); 
     lp.width = width ; 
     lp.height = height - 100; 
     dialog.getWindow().setAttributes(lp2); 

     dialog.show(); 
    } 

Используя вышеописанный метод, я смог успешно создать окно диалога.

И я создаю окно Dialog, используя тему,

Runnable runnable = new Runnable() { 
public void run() { 

       displayDialogWindow(html); 

      } 
}; 

Но после показа окна диалога один раз, я хочу, чтобы изменить ширину окна Dialog динамически. (например, когда я нажимаю на другую кнопку моего приложения, ширина окна должна быть уменьшена и перейти к исходной ширине при нажатии другой кнопки).

Может ли кто-нибудь помочь мне изменить ширину окна диалога динамически?

+0

http://stackoverflow.com/a/10912076/826657 см. Это –

+0

@twntee Я видел это, но это не касается моего друга вопроса. Я хочу изменить его динамически. – harsh

+0

@ что вы думаете о моем ответе? Если вы нашли другое решение, отправьте его ;-). – JJ86

ответ

3

Я думаю, что вам нужно «отменить» свой диалог каждый раз, когда вы хотите его изменить. После yourDialog.show() метода, вы можете вставить эту строку:

yourDialog.getWindow().setLayout((6 * width)/7, LayoutParams.WRAP_CONTENT); 

Это позволит вам изменить размер диалогового окна и его содержание. Конечно ширина и высота - размер вашего экрана.

Смежные вопросы