2009-01-20 53 views
14

我有一個應用程序具有肖像的主要佈局(它被固定爲肖像),並且有一個地方可以鍵入文本。我想以背景圖像爲橫向的彈出窗口啓動,並且背景圖像模糊不清。我知道有一個Popup Widget,但是旋轉文本編輯框的任何想法都會很棒。當鍵盤滑出時,將其旋轉到縱向視圖(僅限文本框)也可以起作用,如同在鍵盤幻燈片上顯示帶有文本框的新屏幕一樣。如何在屏幕上顯示文本編輯框?

回答

37

解決您問題的最簡單方法是在您的主要(縱向固定)活動中從單獨的dialog主題活動中顯示您的EditText

EditText活動的方向不應該固定,所以它會像您期望的那樣旋轉,當您滑出鍵盤時。

創建文本輸入活動

創建一個新的活動中只包含的EditText查看和其他任何你想要包括(可能確定/取消按鈕,也許標籤?)。清單內的主題設置爲Theme.Dialog

<activity android:name="TextEntryActivity" 
      android:label="My Activity" 
      android:theme="@android:style/Theme.Dialog"/> 

霧化或模糊對話框後面的活動是通過修改的前景活動的窗口屬性(文字輸入對話框)來完成。在它的onCreate方法中,使用getWindow().setFlags將模糊應用於任何後臺活動。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, 
        WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

啓動並讀取輸入的數值從文本輸入活動

使用startActivityForResult推出文本輸入活動。在該活動中,請撥打setResult以使用this post中描述的技術返回在返回的意圖中輸入的文本字符串。

重寫onActivityResult方法以偵聽子活動的結果。

鍵盤上的觸發啓動裸露

,只要你想,你可以啓動文本輸入活動,但如果你想始終顯示它的鍵盤時,暴露你可以顯式地捕獲此事件。

首先將android:configChanges屬性添加到縱向活動的清單條目中。應該註冊才能收聽keyboardHidden

android:configChanges="keyboardHidden" 

在該活動中,覆蓋onConfigurationChanged以啓動文本輸入Activity。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    Intent i = new Intent(this,TextEntryActivity.class);  
    startActivityForResult(i, STATIC_INTEGER_VALUE); 
} 

您可能要檢查確認鍵盤暴露(而不是隱藏)使用NEWCONFIG變量啓動文本輸入活動之前。

您也可能希望使用相同的技術在隱藏鍵盤時自動從文本輸入活動返回。

+0

感謝您的洞察力。 – Chrispix 2011-04-14 04:39:52