![](/img/trans.png)
[英]KeyEvent.ACTION_UP only works when I use computer keyboard but not works in android virtual keyboard
[英]Android keyboard only shows up once, but works perfectly when I remove the ListView
當前行為
使用以下xml布局,當活動開始時,EditText的android鍵盤會立即顯示。 如果退出鍵盤,則觸摸EditText並不能將鍵盤恢復原狀。
期望的行為
當我注釋掉下面的ListView時,一切正常。 android鍵盤不會立即為EditText彈出,而是僅在我按下它時彈出。 我也可以通過觸摸EditText將鍵盤調回。
問題
旁注
在這兩種情況下,我都注釋掉了處理ListView的所有Java代碼,因此這不是編程問題。 當我單擊“后退”按鈕,然后返回到此活動時,鍵盤再次彈出(當ListView被注釋掉時)。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mywebsite.myproject.PrivateChat" >
<RelativeLayout
android:id="@+id/form"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:orientation="vertical" >
<EditText
android:id="@+id/message_input_box"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:background="#333333"
android:hint="Type a message..."
android:textColorHint="#FFFFFF"
android:inputType="text"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:textColor="#FFFFFF"
android:textSize="26sp" />
</RelativeLayout>
<ListView
android:id="@+id/private_chat_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
我只用2行xml修復了它。
我在AndroidManifest.xml
的activity
中添加了以下行:
android:windowSoftInputMode="stateAlwaysHidden"
我將此行添加到ListView中:
android:layout_above="@id/form"
為什么這樣做
我感覺ListViews有一個錯誤,它會自動調出軟鍵盤。 添加xml的第一行時,它阻止了鍵盤自動彈出。 根據文檔,所有這些操作是The soft keyboard is always hidden when the activity's main window has input focus.
換句話說,這行可能唯一有效的方法是主窗口具有焦點,因此很可能是ListViews的錯誤。 抱歉,我沒有更具體的解釋。
第二行很直觀。 由於我將ListView的高度設置為match_parent
因此ListView占據了整個屏幕。 因此,它覆蓋了EditText,這就是為什么我不能再次按下EditText來帶回鍵盤的原因。 為了阻止ListView與EditText重疊,我只是將ListView錨定在EditText上方(位於包含EditText的RelativeLayout上方,但這不是重點)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.