2012-12-21 33 views
6

Tôi có một ActionLayout cho một searchIcon của MenuItems. ActionLayout này có một AutoCompleteTextView có imeOption = "actionSearch".Biểu tượng tìm kiếm trên bàn phím mềm

Nhưng khi tôi nhấp vào menuItems và ActionLayout xuất hiện, bàn phím mềm bật lên, nhưng nó vẫn có phím dòng mới thay vì searchIcon.

đang Hoạt động:

private AutoCompleteTextView mEtSearchbar; 
private MenuItem mSearchbar; 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

    case R.id.searchIcon: 

     mEtSearchbar.clearFocus(); 
     (new Handler()).postDelayed(new Runnable() { 
      public void run() { 
       mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(
         SystemClock.uptimeMillis(), 
         SystemClock.uptimeMillis(), 
         MotionEvent.ACTION_DOWN, 0, 0, 0)); 
       mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(
         SystemClock.uptimeMillis(), 
         SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 
         0, 0, 0)); 
      } 
     }, 100); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    // TODO Auto-generated method stub 
    inflater.inflate(R.menu.m_menu, menu); 


    mSearchbar = (MenuItem) menu.findItem(R.id.searchIcon); 
    View actionview = mSearchbar.getActionView(); 
    mEtSearchbar = ((AutoCompleteTextView) actionview 
      .findViewById(R.id.search_editText)); 
    final ImageView searchImage = ((ImageView) actionview 
      .findViewById(R.id.search_image)); 
    searchImage.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      String s = mEtSearchbar.getText().toString(); 

       Intent intent = new Intent(getSherlockActivity(), 
         SearchActivity.class); 
       intent.putExtra("search_string", s); 
       startActivity(intent); 
     } 
    }); 

    mEtSearchbar 
      .setOnEditorActionListener(new TextView.OnEditorActionListener() { 

       @Override 
       public boolean onEditorAction(TextView v, int actionId, 
         KeyEvent event) { 
        if (actionId == EditorInfo.IME_ACTION_SEARCH) { 

         searchImage.performClick(); 
         return true; 
        } 
        return false; 
       } 
      }); 

    super.onCreateOptionsMenu(menu, inflater); 
} 

* đơn layou * t

m_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/searchIcon" 
     android:actionLayout="@layout/search_icon_actionview" 
     android:icon="@drawable/search_icon" 
     android:showAsAction="ifRoom|collapseActionView" 
     android:title="Search"/> 
    <item 
     android:id="@+id/notificationIcon" 
     android:icon="@drawable/notification_icon" 
     android:orderInCategory="0" 
     android:showAsAction="ifRoom|collapseActionView" 
     android:title="Notifications"/> 

</menu> 

search_icon_actionview.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/search_image" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:clickable="true" 
     android:contentDescription="Search icon" 
     android:src="@drawable/search_icon" /> 

    <AutoCompleteTextView 
     android:id="@+id/search_editText" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_toLeftOf="@id/search_image" 
     android:hint="Search" 
     android:imeOptions="actionSearch" /> 

</RelativeLayout> 

Làm thế nào để có một searchIcon hoặc ít nhất một done nút trên bàn phím mềm mại, mà trên nhấp chuột phải thực hiện các nhấp chuột của searcIcon tôi có trong ActionLayout

cảm ơn

Trả lời

12

Tôi phải thêm

android:singleLine="true" 

cũng

Các vấn đề liên quan