0

ドロップダウンメニューを既に作成している次のコードがあります

public class MainActivity extends FragmentActivity implements
    ActionBar.OnNavigationListener {

private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";

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

    // Set up the action bar to show a dropdown list.
    final ActionBar actionBar = getActionBar();
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    actionBar.setDisplayShowHomeEnabled(false);

    // Set up the dropdown list navigation in the action bar.
    actionBar.setListNavigationCallbacks(
    // Specify a SpinnerAdapter to populate the dropdown list.
            new ArrayAdapter<String>(actionBar.getThemedContext(),
                    android.R.layout.simple_list_item_1,
                    android.R.id.text1, new String[] {
                            getString(R.string.demo1),
                            getString(R.string.demo2),
                            getString(R.string.demo3)}), this);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    // Restore the previously serialized current dropdown position.
    if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
        getActionBar().setSelectedNavigationItem(
                savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
    }
}

@Override
public void onSaveInstanceState(Bundle outState) {
    // Serialize the current dropdown position.
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar()
            .getSelectedNavigationIndex());
}

@Override
public boolean onNavigationItemSelected(int position, long id) {
    // When the given dropdown item is selected, show its contents in the
    // container view.
    Fragment fragment = new MainFragmentSection();
    Bundle args = new Bundle();
    args.putInt(MainFragmentSection.ARG_SECTION_NUMBER, position + 1);
    fragment.setArguments(args);
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.container, fragment).commit();
    return true;
}
public static class MainFragmentSection extends Fragment {
    public static final String ARG_SECTION_NUMBER = "section_number";
    public MainFragmentSection() {
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.main_fragment,
                container, false);
        TextView dummyTextView = (TextView) rootView
                .findViewById(R.id.section_label);
        dummyTextView.setText(Integer.toString(getArguments().getInt(
                ARG_SECTION_NUMBER)));
        return rootView;
    }
}
   }

私がやりたいのは、同じアクションバーの既存のドロップダウンメニューのすぐ隣に別のドロップダウンリストを追加して、ユーザーの選択時に現在のフラグメントをフォーカスで再描画できるようにすることです(これは最初のスピナーまたはドロップに依存します)現在のフラグメント ビューで文字列配列を並べ替えるなど、いくつかの小さな変更が加えられています。

いくつかのガイダンスと支援をいただければ幸いです。

4

1 に答える 1

1

アクション バーは Android の標準的なデザイン パターンであり、カスタマイズするとアプリ間で一貫性がなくなり、ユーザーを混乱させたりイライラさせたりする可能性があるため、これはお勧めできません。ただし、さまざまな理由でこれを行う必要がある場合があることは理解しています。

できることは、アクション バーのカスタム ビューを作成することです。これにより、ほとんどの場合、必要に応じて設計できます。以下は、その方法を説明する vogella チュートリアルです。

http://www.vogella.com/articles/AndroidActionBar/article.html#menu_customviews

基本的には、XML でカスタム ビューを作成し、コードまたはテーマ スタイルを使用してそれをアクション バーに追加します。

それが役立つことを願っています。

于 2013-11-15T10:38:16.990 に答える