2014-07-07 2 views
0

내 동작 표시 줄 아이콘을 클릭 할 때 간단한 드롭 다운 메뉴를 만들고 특정 선택을 특정 동작에 연결하려고했습니다. 이 같은주어진 동작 표시 줄 아이콘에 드롭 다운 메뉴를 추가하는 방법

뭔가 :

enter image description here

나는이하지만 행운을 따르려고 노력했습니다.

How to add submenu items to ActionBar action in code?

Android ActionBar ActionProvider submenu

현재 내 자바 코드로 이것을 가지고 있지만, 드롭 다운 메뉴는 오버 플로우 아이콘 대신 내 APPNAME 아래에 표시됩니다 : 당신은 환경 설정 작업을 사용할 수 있습니다

public boolean onCreateOptionsMenu(Menu menu){ 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 
     return true; 
    } 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     super.onCreate(savedInstanceState); 

     SpinnerAdapter adapter = 
       ArrayAdapter.createFromResource(this, R.array.actions, 
         android.R.layout.simple_spinner_dropdown_item); 

// Callback 
     OnNavigationListener callback = new OnNavigationListener() { 

      String[] items = getResources().getStringArray(R.array.actions); // List items from res 

      @Override 
      public boolean onNavigationItemSelected(int position, long id) { 

       // Do stuff when navigation item is selected 

       Log.d("NavigationItemSelected", items[position]); // Debug 

       return true; 

      } 

     }; 

답변

0

이것 때문에. 그래서 그냥 res 폴더에 xml 폴더를 만듭니다. 및 Settings.XML이 해당가 MyPreferenceCategory.java 만든 후

<com.xxx.MyPreferenceCategory 
    android:title="@string/about_application" > 

    <Preference 
     android:key="shareApp" 
     android:summary="@string/share_app_summary" 
     android:title="@string/share_app" /> 

    <Preference 
     android:key="rateApp" 
     android:summary="@string/rate_app_summary" 
     android:title="@string/rate_app" /> 

    <Preference 
     android:key="version" 
     android:summary="@string/version_app_summary" 
     android:title="@string/version_app" /> 
</com.xxx.MyPreferenceCategory> 

<com.xxx.MyPreferenceCategory 
    android:title="@string/about_developer" > 

    <Preference 
     android:key="contactUs" 
     android:summary="@string/contact_us_summary" 
     android:title="@string/contact_app" /> 

    <Preference 
     android:key="aboutUs" 
     android:title="@string/about_app" /> 

    <Preference 
     android:key="terms" 
     android:title="@string/about_app_terms" /> 

    <Preference 
     android:key="policy" 
     android:title="@string/about_app_policy" /> 
</com.xxx.MyPreferenceCategory> 

<?xml version="1.0" encoding="utf-8"?> 
를 생성한다.

public class MyPreferenceCategory extends PreferenceCategory{ 

public MyPreferenceCategory(Context context) { 
    super(context); 
} 

private TextView categoryTitle; 

public MyPreferenceCategory(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public MyPreferenceCategory(Context context, AttributeSet attrs, 
     int defStyle) { 
    super(context, attrs, defStyle); 
} 
@Override 
protected View onCreateView(ViewGroup parent) { 
    categoryTitle = (TextView) super.onCreateView(parent); 

    return categoryTitle; 
} 

}

이이 MenuOptions.java이 후

public class MenuOptions extends SherlockPreferenceActivity { 
Handler disconnectHandler; 
Runnable disconnectCallback; 
Preference shareApp, rateApp, contactUs, aboutUs, termsCondition, 
     privacyPolicy; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.settings); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    findViewById(android.R.id.list).setBackgroundColor(Color.WHITE); 

    disconnectHandler = new Handler() { 
     public void handleMessage(Message msg) { 
     } 
    }; 

    disconnectCallback = new Runnable() { 
     @Override 
     public void run() { 
     } 
    }; 

    shareApp = (Preference) findPreference("shareApp"); 
    shareApp.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

     @Override 
     public boolean onPreferenceClick(Preference preference) { 
     //do your stuff 
      return false; 
     } 
    }); 

    rateApp = (Preference) findPreference("rateApp"); 
    rateApp.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      //do your stuff 
      return false; 
     } 
    }); 

    contactUs = (Preference) findPreference("contactUs"); 
    contactUs.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      //do your stuff 
      return false; 
     } 
    }); 

    aboutUs = (Preference) findPreference("aboutUs"); 
    aboutUs.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      return false; 
     } 
    }); 

    termsCondition = (Preference) findPreference("terms"); 
    termsCondition 
      .setOnPreferenceClickListener(new OnPreferenceClickListener() { 

       @Override 
       public boolean onPreferenceClick(Preference preference) { 
        return false; 
       } 
      }); 

    privacyPolicy = (Preference) findPreference("policy"); 
    privacyPolicy 
      .setOnPreferenceClickListener(new OnPreferenceClickListener() { 

       @Override 
       public boolean onPreferenceClick(Preference preference) { 
        return false; 
       } 
      }); 
} 

@Override 
public boolean onOptionsItemSelected(
     com.actionbarsherlock.view.MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     break; 

    default: 
     break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

을 파일을 생성 한 후 당신이 코드를 넣어 버튼을 설정 작업 표시 줄을 사용하는 어디 어디.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.activity_main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
     Intent intent = new Intent(getBaseContext(), MenuOptions.class); 
     startActivity(intent); 
     return true; 

    default: 
     break; 

    } 
    return super.onOptionsItemSelected(item); 
} 
관련 문제