<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:padding="20dp" >
<AutoCompleteTextView
Android:id="@+id/autocomplete_zone"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:dropDownVerticalOffset="0.2dp"
Android:ems="10"
Android:hint="@string/zone_hint"
Android:inputType="text"
Android:lines="1"
Android:maxLines="1"
Android:popupBackground="#00ffffff"
Android:textColor="#ffffff"
Android:textColorHint="#ffffff" >
<requestFocus />
</AutoCompleteTextView>
<ProgressBar
Android:id="@+id/progressBar1"
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:layout_alignBottom="@id/autocomplete_zone"
Android:layout_alignRight="@id/autocomplete_zone"
Android:layout_alignTop="@id/autocomplete_zone"
Android:paddingBottom="5dp"
Android:visibility="invisible" />
</RelativeLayout>
上記のマークアップで
<requestFocus />
動作しません。アクティビティの開始時に、テキストビューはフォーカスされません。これは、テキストビューをオーバーレイするプログレスバーが原因ですか?これを修正する方法はありますか?
解決しました!マニフェストで、アクティビティに次のように追加しました。
Android:windowSoftInputMode="stateAlwaysVisible"
私は通常、フォーカスを設定するために以下を使用します:以下の属性をxml-layout
に追加します
<AutoCompleteTextView
Android:focusable="true"
Android:focusableInTouchMode="true">
</AutoCompleteTextView>
プログラムのようにフォーカスを設定します
((AutoCompleteTextView) findViewById(R.autocomplete_zone)).requestFocus();
f.e. onResume
またはonWindowChanged
で
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
((AutoCompleteTextView) findViewById(R.autocomplete_zone)).requestFocus();
}
}
上記のどれも私のために働いていません...これは私が使用したものです
txtView.getParent().requestChildFocus(txtView,txtView);
キーボードを強制的に表示したい場合は、コードでこれを試すことができます。
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
次に、このコードを使用してキーボードを閉じることができます。
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(autocomplete_zone.getWindowToken(), 0);
これをコードで行うには、Activity
で:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);