我有一个带有三个EditText的屏幕,然后单击屏幕顶部的屏幕中的第一个,它不会调用键盘。我没有使用AVD,而是使用了自己的设备,并在其他设备上进行了测试,结果相同。
我将屏幕和xml代码放在这里...在EditTexts之间没有什么不同,只是位置。要在该EditText中进行输入,我需要选择上面的EditText之一,然后显示键盘。至少当我再次选择第一个EditText时,它不会隐藏。我已经尝试过setFocus(true),但不能解决我的问题。请帮帮我!
XML
<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:background="@drawable/background"
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=".SaldoCadastro" >
<TextView
android:id="@+id/tvTituloReg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Saldo Banco"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/tvErroSenha1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvTituloReg"
android:layout_marginTop="17dp"
android:text="Insert on the field below how much you have in your bank." />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvErroSenha1"
android:layout_below="@+id/tvErroSenha1"
android:layout_marginTop="41dp"
android:text="Insert on the field below how much is your credit card limit." />
<EditText
android:id="@+id/etSaldo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvErroSenha1"
android:ems="10"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/etCartaoLimite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/textView2"
android:ems="10"
android:inputType="numberDecimal" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/etCartaoLimite"
android:layout_below="@+id/etCartaoLimite"
android:text="About your credt card how much you've spent already." />
<EditText
android:id="@+id/etCartao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/textView3"
android:ems="10"
android:inputType="numberDecimal" />
<Button
android:id="@+id/btRegisterSaldo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/etCartao"
android:layout_below="@+id/etCartao"
android:layout_marginLeft="14dp"
android:text="Register" />
<activity
......
android:windowSoftInputMode="adjustResize"
...... >
</activity>
请在AndroidManifest.xml中添加此属性
从xml删除此行:
<requestFocus />
否则,您可以添加此代码:
editText.clearFocus();
嘿,请检查您的AndroidMainfest活动并像这样进行一些更改
android:windowSoftInputMode="stateAlwaysVisible"
在此布局示例的活动中:
<activity
android:name="com.example.a.MainActivity"
android:windowSoftInputMode="stateAlwaysVisible" //this will make your keyboard work
android:label="@string/app_name" >
您的意思是:当您开始活动时,将显示soft_keyboard吗?如果要这样做,您只需添加以下代码即可:
android:windowSoftInputMode="adjustResize"
到您的AndroidManifest.xml例如这样:
<activity
android:name="com.fortrun.testcrashlytics.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
希望对您有所帮助!
就我而言,使用android EditText代替我的自定义EditText解决了问题。