簡體   English   中英

Android鍵盤僅顯示一次,但在刪除ListView時可以完美運行

[英]Android keyboard only shows up once, but works perfectly when I remove the ListView

當前行為

使用以下xml布局,當活動開始時,EditText的android鍵盤會立即顯示。 如果退出鍵盤,則觸摸EditText並不能將鍵盤恢復原狀。

期望的行為

當我注釋掉下面的ListView時,一切正常。 android鍵盤不會立即為EditText彈出,而是僅在我按下它時彈出。 我也可以通過觸摸EditText將鍵盤調回。

問題

  1. 為什么當我擁有ListView時會發生意外行為?
  2. 如何保持ListView和所需的行為?

旁注

在這兩種情況下,我都注釋掉了處理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.xmlactivity中添加了以下行:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM