2015-05-11 85 views
0

我有一個複雜的自定義視圖,與pinterest搜索框非常相似。該組件簡單地在LinearLayout中顯示EditText和多個Button軟鍵盤不會在ActionBar中出現onTouch自定義EditText

當它在任何Fragment佈局中時,該組件可以正常使用相同的佈局文件。這意味着當用戶點擊它時,soft-keyboard顯示並正常工作與EditText 但是,當我嘗試將此組件添加到我的自定義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

在其中的活動,編輯文本是否有活動課在清單文件中聲明你有沒有要加這行代碼下面所顯示的

活動的Android裏面: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

你的意思是'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」