2012-12-21 16 views
6

मेरे पास MenuItems की खोज आइकन के लिए एक एक्शनलेआउट है। इस एक्शनलेआउट में एक ऑटोकंपलेटटेक्स्ट व्यू है जिसमें imeOption = "actionSearch" है।सॉफ्ट कीबोर्ड पर खोज आइकन

लेकिन जब मैं मेनू पर क्लिक करता हूं ITems और ActionLayout प्रकट होता है, तो सॉफ्ट कीबोर्ड पॉप अप होता है, लेकिन अभी भी searchIcon की बजाय न्यूलाइन कुंजी है।

अभ्यास कोड:

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); 
} 

* मेनू Layou * टी

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> 

कैसे एक searchIcon या कम से कम एक किया बटन नरम कीबोर्ड पर है, जो क्लिक पर में searcIcon के क्लिक मैं प्रदर्शन करना ActionLayout

धन्यवाद करने के लिए

उत्तर

12

मैं

android:singleLine="true" 
जोड़ने के लिए

भी