2015-05-11 7 views
0

У меня сложный пользовательский вид, который очень похож на поле поиска 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

enter image description here

+0

мне очень интересно об этом ... Вы ее решить? –

+0

@joaquin, к сожалению, нет. Я изменил способ реализации, добавив пользовательскую панель действий с помощью только «EditText», а затем передал значение из нее на другой экран с моим компонентом –

ответ

0

В которой деятельности, редактирование текст есть, что класс активности объявить в файле манифеста там вам нужно добавить эту строку коды ниже, как показано

внутри деятельности андроида: windowSoftInputMode = «stateAlwaysVisible»

+0

. Это будет отображать «SoftInput» всегда без подключения к «EditText». Это не то, что я хочу –

0

Вы можете попробовать добавить эту строку, когда к кнопке панели действий слушателя

your_view.getWindow(). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

+0

Вы имеете в виду, что это 'OnClick' или' OnTouch'? –

+0

OnClick - это своего рода 'OnTouch', поэтому я предлагаю' OnClick' –

+0

. Что означает u в 'your_view' панели действий или EditText? –

0

После установки пользовательского поиска Вы можете вызвать следующий код. searchView должен быть инициализирован в файле android.widget.searchview.

searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 
       getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
      } 
    } 
} 
searchView.requestFocus(); 

Для EditText использования setOnFocusChangeListener или андроида: windowSoftInputMode = "stateAlwaysVisible"

Смежные вопросы