如何在Android设置在动作条意见的“动作按钮”

问题描述:

我的要求是: - The action bar如何在Android设置在动作条意见的“动作按钮”

,当我点击搜索按钮,我想: - SEarchview 因此,这里是我的代码: -

Snacks.java

public class Snacks extends Activity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_snacks); 

       getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#33B5E5"))); 

       getActionBar().setTitle("Snacks"); 

       getActionBar().setIcon(R.drawable.ic_launcher); 

       getActionBar().setHomeButtonEnabled(true); 

} 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main_actions, menu); 

     MenuItem searchMenuItem = menu.findItem(R.id.action_search); 

     SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); 

     searchView.setIconified(true); 

     int searchImgId = getResources().getIdentifier("android:id/search_button", null, null); 
     ImageView searchImg = (ImageView) searchView.findViewById(searchImgId); 
     searchImg.setImageResource(R.drawable.ic_action_search); 

     int searchDeleteImgId = getResources().getIdentifier("android:id/search_close_btn", null, null); 
     ImageView searchDeleteImg = (ImageView) searchView.findViewById(searchDeleteImgId); 
     searchDeleteImg.setImageResource(R.drawable.ic_action_delete); 

     int searchSrcTextId = getResources().getIdentifier("android:id/search_src_text", null, null); 
     EditText searchEditText = (EditText) searchView.findViewById(searchSrcTextId); 
     searchEditText.setTextColor(Color.WHITE); 
     searchEditText.setHintTextColor(Color.LTGRAY); 
     searchEditText.setHint("Search Here"); 

     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

      @Override 
      public boolean onQueryTextSubmit(String s) { 
       Toast.makeText(getApplicationContext(), "Entered Keyword is " + s,Toast.LENGTH_LONG).show(); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String s) { 
       return false; 
      } 
     }); 

     return true; 
    } 


} 

activity_main_actions.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/action_search" 
     android:actionViewClass="android.widget.SearchView" 
     android:icon="@drawable/ic_action_search" 
     android:showAsAction="always" 
     android:title="Search"/> 
    <item android:id="@+id/action_contact" 

      android:title="Contacts" 
      android:showAsAction="always"/> 
    <item android:id="@+id/settings" 

      android:title="Contacts" 
      android:showAsAction="never"/> 


</menu> 

styles.xml

<!-- 
     Base application theme, dependent on API level. This theme is replaced 
     by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
    --> 
    <style name="AppBaseTheme" parent="android:Theme.Light"> 
     <!-- 
      Theme customizations available in newer API levels can go in 
      res/values-vXX/styles.xml, while customizations related to 
      backward-compatibility can go here. 
     --> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

</resources> 

但是当我运行这个程序,我得到这个: - actionbar 这里,APPNAME 零食没有显示..当我点击searchview我得到: - searchview

此searchview扩展了全部。我的代码中哪里出错我无法实现我的要求..

您可以在searchView上使用setMaxWidth(int maxpixels)方法。

searchView.setMaxWidth(100); 

尝试用不同的大小,不知道这将是足够好:)

此外,如果接触按钮不需要在那里,你可以在XML开关

<item android:id="@+id/action_contact" 
android:title="Contacts" 
android:showAsAction="ifRoom"/> 
所有的时间