2017-02-28 1 views
0

난 그냥 필터 아이콘이이 Example는 프로그래밍 방식

같은 도구 모음을 만들 필요하지만 항목을 클릭 것처럼 될 것 I는 데이터베이스에서 가져온 항목을 동적으로 추가 할 이 메뉴 fliter 아이콘 으로 정렬 나는 여기 내 메뉴 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 당신이 시도한 코드를 게시할까요? [Stack Overflow community] (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> 

스피너

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의 각 항목에 대한 견해를 텍스트 뷰를 포함하는 spinner_dropdown_item.xml을 만들 .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

도구 모음을 null로 초기화하지 않습니다. –

+0

예 감사합니다. @Saurabh Bhandari – 7arooney