2017-04-06 84 views
-1

我有一個佈局,其中包含一個EditText輸入字段,並在此佈局的頂部我彈出一個AlertDialog(Advertisement)。問題在於SoftKeyBoard在點擊EditText時沒有彈出。是否有任何解決方法來實現這一要求?在EditText佈局頂部的AlertDialog,不顯示鍵盤

enter image description here

佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_secondary" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="inova.lk.com.librarytestapp.main.SecondaryActivity"> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="20dp" 
     android:layout_margin="20dp" 
     android:hint="Enter Name" 
     android:focusableInTouchMode="true" 
     android:layout_centerInParent="true"/> 
</RelativeLayout> 

AlertDialog:

final Dialog dialog = new Dialog(activity); 

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(inova.lk.com.inapplibrary.R.layout.custom_dialog_layout); 
dialog.setCancelable(false); 

Window window = dialog.getWindow(); 
window.setFlags(
     WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
     WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 
); 

window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes(); 
wmlp.width = Utility.dpToPx(320); 
wmlp.height = Utility.dpToPx(50); 

dialog.show(); 

UPDATE *****

我開發一個廣告SDK像谷歌ADZ。 AlertDialog是我的adz橫幅。 edittext佈局頂部的橫幅是一個場景。因此,我想要一個解決方案,不需要使用我的SDK的用戶在他們身邊做任何更改。

+0

從您的xml中刪除此行「android:focusableInTouchMode =」true「 」 –

+1

可能的重複項:http://stackoverflow.com/questions/3455235/when-using-alertdialog-builder-with-edittext-the- soft-keyboard-doesnt-pop – rafsanahmad007

+0

@ rafsanahmad007請閱讀問題。在這裏我正在談論一個不同的場景。你指出的那個問題是談論當EditText包含在AlertDialog內時會發生什麼。 –

回答

0

把這些行放在dialog.show();

try{ 
     dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 
    }catch (Exception e){ 
     e.printStackTrace(); 
     } 
+0

如果EditText包含在AlertDialog裏面,這個可以工作,謝謝 –

+0

然後嘗試requestFocus(edittext); –

+0

我正在開發一個像google adz這樣的廣告SDK AlertDialog是我的adz橫幅。所以我想要一個不需要用戶做任何改變的解決方案,謝謝 –

0

即時彈出一個AlertDialog(廣告)。

爲什麼你必須使用AlertDialog?由於您的廣告始終放在佈局的頂部,因此您可能不需要AlertDialog,而只需使用FrameLayout並將其放在佈局的頂部。

+0

我正在開發一個SDK,並且有adz類型(如google adz)。例如,如果我提供自定義視圖,則頂部橫幅,底部橫幅,全屏橫幅等,然後開發人員可以將該視圖放置在佈局的任何位置。所以我不能強迫開發者放置頂部橫幅,底部橫幅等。 –