У меня сложный пользовательский вид, который очень похож на поле поиска pinterest
. Этот компонент просто отображает EditText
и несколько Button
s в LinearLayout
.Мягкая клавиатура не отображается вTouch custom EditText в ActionBar
Компонент прекрасно работает с тем же файлом макета, когда он находится в любом макете Fragment
. что означает, что когда пользователь нажимает на него, soft-keyboard
отображает и отлично работает с EditText
BUT, когда я пытаюсь добавить этот компонент в свой собственный код actionbar
, он не работает. Это означает, что нажатие на него не показывает soft-keyboard
.
Я считаю, что это проблема с фокусом, но я попытался отладить и метод onTouch вызывается нормально. Я также попытался работать с параметром descendantFocusability
без каких-либо результатов.
Вот мой заказ ActionBar
инициализации
public void initializeCustomActionBar() {
android.support.v7.app.ActionBar mActionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
mActionBar.setDisplayShowHomeEnabled(true);
mActionBar.setDisplayShowTitleEnabled(false);
LayoutInflater mInflater = LayoutInflater.from(getActivity());
View customView = mInflater.inflate(R.layout.actionbar_layout, null);
mActionBar.setDisplayShowCustomEnabled(true);
mActionBar.setCustomView(customView);
}
и вот мой заказ ActionBar
макет XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.my.package.customSearch
android:id="@+id/pdt_actionbar_searchbox"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp" />
Я строю этот пользовательский макет программно без файлов XML. По некоторым причинам я не смогу опубликовать свой код для создания этого макета, но я рисую изображение, подробно описывая иерархию макета ActionBar
.
ПРИМЕЧАНИЕ: Я использую NavigationDrawer
меню слева. Я думаю, что конфликт в центре между этим меню Button
левый и моего EditText
мне очень интересно об этом ... Вы ее решить? –
@joaquin, к сожалению, нет. Я изменил способ реализации, добавив пользовательскую панель действий с помощью только «EditText», а затем передал значение из нее на другой экран с моим компонентом –