2017-02-28 30 views
0

我只需要创建一个工具栏,这样 Example如何在动作条工具栏创建过滤器图标编程

有一个过滤器图标,但我想动态添加从数据的基础上拍摄的内容,如果我点击的项目它会在此菜单图标郝晓红分类 我希望会是清楚 这里是我的菜单XML代码

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

    <item 
     android:id="@+id/menu_spinner" 
     android:actionViewClass="android.widget.Spinner" 
     android:visible="false" 
     android:showAsAction="always"/> 

</menu> 

,这我MainActivity

package abtech.waiteriano.com.actionbartest; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 

public class MainActivity extends Activity { 

    private MenuItem mSpinnerItem = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     mSpinnerItem = menu.findItem(R.id.menu_spinner); 
     getMenuInflater().inflate(R.menu.main, menu); 
     mSpinnerItem = menu.findItem(R.id.menu_spinner); 
     setupSpinner(mSpinnerItem); 
     return true; 
    } 
    private void setupSpinner(MenuItem item) 
    { 
     item.setVisible(getActionBar().getNavigationMode() == ActionBar.NAVIGATION_MODE_LIST); 
     View view = item.getActionView(); 
     if (view instanceof Spinner) 
     { 
      Spinner spinner = (Spinner) view; 
      spinner.setAdapter(ArrayAdapter.createFromResource(this, 
        R.array.spinner_data, 
        android.R.layout.simple_spinner_dropdown_item)); 
     } 
    } 
} 

Error

+0

欢迎来到[Stack Overflow](http://stackoverflow.com/)!请阅读[如何提问](http://stackoverflow.com/help/how-to-ask)并提供[最小,完整和可验证示例](http://stackoverflow.com/help/mcve) ! –

+0

是我的问题不清楚?? .......如果是请编辑我的问题@Saurabh Bhandari – 7arooney

+0

@ 7aroony发布你的代码你试过了什么? [堆栈溢出社区](http://stackoverflow.com/)在这里是为了帮助你不是为了做你的工作。所以至少要付出你的努力,那么你在这里会遇到任何问题。 –

回答

1

您可以实现您所需的视图如下。

activity_main.xml中

<LinearLayout 
    xmlns:android=”http://schemas.android.com/apk/res/android” 
    xmlns:tools=”http://schemas.android.com/tools” 
    android:layout_width=”match_parent” 
    android:layout_height=”match_parent” 
    tools:context=”.MainActivity”> 
    <android.support.v7.widget.Toolbar 
     android:id=”@+id/toolbar” 
     android:layout_width=”match_parent” 
     android:layout_height=”wrap_content” 
     android:background=”?attr/colorPrimary” 
     android:minHeight=”?attr/actionBarSize” /> 
</LinearLayout> 

创建包含的TextView一个spinner_dropdown_item.xml表示视图喷丝

spinner_dropdown_item.xml

<?xml version=”1.0″ encoding=”utf-8″?> 
<TextView xmlns:android=”http://schemas.android.com/apk/res/android” 
    android:id=”@android:id/text1″ 
    android:layout_width=”match_parent” 
    android:layout_height=”wrap_content” 
    android:background=”@color/colorPrimary” 
    android:gravity=”center_vertical” 
    android:minHeight=”?android:attr/listPreferredItemHeightSmall” 
    android:paddingLeft=”12dp” 
    android:paddingRight=”12dp” 
    android:textAppearance=”?android:attr/textAppearanceListItemSmall” /> 

MainActivity的每个项的.java

public class MainActivity extends AppCompatActivity { 
    private Toolbar toolbar; 
    private String[] category={"hello","this","is","me"}; 

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

     category = getResources().getStringArray(R.array.category); 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     toolbar.setLogo(R.drawable.ic_drawer); 

     SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.category, R.layout.spinner_dropdown_item); 
     Spinner navigationSpinner = new Spinner(getSupportActionBar().getThemedContext()); 
     navigationSpinner.setAdapter(spinnerAdapter); 
     toolbar.addView(navigationSpinner, 0); 

     navigationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(MainActivity.this, 
         “you selected: ” + category[position], 
         Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 

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

    } 
} 

这是你的menu.xml文件文件

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.na.quiz.activity.WelcomeActivity"> 

    <item 
     android:id="@+id/action_logout" 
     android:orderInCategory="100" 
     android:title="@string/action_logout" 
     app:showAsAction="always" 
     android:icon="@android:drawable/ic_menu_search" /> 
    <item 
     android:title="LIke" 
     android:orderInCategory="101" 
     android:id="@+id/like" 
     app:showAsAction="always" 
     android:icon="@drawable/com_facebook_button_like_icon_selected" /> 

</menu> 

我希望它为你工作。

+0

OMG谢谢很多兄弟我只是一个小错误.....检查我张贴一张新照片 @Saurabh Bhandari – 7arooney

+0

不初始化工具栏为空 –

+0

是的谢谢我已经做了@Saurabh Bhandari – 7arooney