我在工具欄的可擴展操作視圖中有一個EditText
。當我展開動作時,會顯示EditText
,我希望它能夠獲得焦點。爲了實現這個目標我以下:EditText.requestFocus()返回true,但沒有真正把焦點放在視圖
action_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/connections_find_people_container"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<EditText
android:id="@+id/connections_find_people_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"/>
</RelativeLayout>
在我的片段
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
inflater.inflate(R.menu.add_connection, menu);
mAddMenuItem = menu.findItem(R.id.menu_add);
MenuItemCompat.setActionView(mAddMenuItem, R.layout.action_layout);
mSearchView = MenuItemCompat.getActionView(mAddMenuItem);
mSearchEditText = (EditText) mSearchView.findViewById(R.id.connections_find_people_edit);
MenuItemCompat.setOnActionExpandListener(mAddMenuItem, mOnSearchExpandListener);
super.onCreateOptionsMenu(menu, inflater);
}
private final OnSearchExpandListener mOnSearchExpandListener = new MenuItemCompat.OnActionExpandListener {
mSearchEditText.requestFocus();
return true;
}
@Override
public boolean onMenuItemActionCollapse(final MenuItem item) {
return true;
}
}
出人意料的是,這是行不通的。點擊工具欄中的動作後,視圖展開,顯示mSearchEditText
,但未獲得焦點。
具體地說(古怪),mSearchEditText.requestFocus();
返回true,但軟鍵盤仍然未顯示並且在mSearchEditText
沒有光標。
顯示軟件鍵盤不是什麼大不了的事,有辦法,迫使它,但即使當我告訴鍵盤,打字不插入任何文本爲mSearchEditText
。只有當光標出現時我點擊mSearchEditText
,然後我可以在其中鍵入一些文字。
我已經試過什麼:
- 在XML和無論是在
onCreateOptionsMenu()
當動作視圖中展開 - 結算重點要求它像
mSearchEditText.clearFocus()
之前設置
- 視圖展開後延遲
requestFocus()
focusable
和
focusableInTouchMode
都和編程
這真的很奇怪,因爲以下
@Override
public boolean onMenuItemActionExpand(final MenuItem item) {
mSearchEditText.setFocusableInTouchMode(true);
mSearchEditText.setFocusable(true);
mSearchView.postDelayed(new Runnable() {
@Override
public void run() {
if (mSearchEditText.requestFocus()) {
KeyboardUtils.showSoftKeyboard(ConnectionsFragment.this);
}
}
}, 300);
return true;
}
顯示鍵盤,這應該意味着mSearchEditText
具有焦點,但打字不輸入任何文字。 (再次,當我點擊EditText時,光標出現,一切正常)。
嘗試改變相對佈局的android:layout_width到match_parent。將一些提示文本設置爲editext以查看效果。 – cgr