4

我是 Android 新手,需要您的建议。我想要一个带有操作栏的活动,我还需要选项卡(但不是操作栏中的选项卡)和操作栏中的下拉列表来导航。当我单击EG第一个选项卡时,应填充ActionBar中的导航列表,当秒表选项卡,导航列表应填充其他数据等时,当更改选项卡时,还应更改操作项。当我从操作栏中的导航列表中选择某些项目时,应该更新视图。我不知道怎么做。

我将 ActionBarSherlock 用于操作栏,并且我已经使用带有片段的 TabHost 和 TabWidget 选项卡,当我单击选项卡时,片段会更改,但这并不是我想要的,我不知道下一步该做什么。你可以帮帮我吗?

这是一个屏幕:

在此处输入图像描述

当我单击 Tab 1 时,操作栏中的导航列表应该是 Tab1 List1、Tab1 List2 等,并且应该在第一次显示列表中的默认视图(例如第一个 Tab1 List1)或最后由用户视图从导航列表。当我单击选项卡 2 时,列表应该是 Tab2 List1、Tab2 List2 等,并且应该显示例如 Tab2 List2 视图。等等。所以每个选项卡都会调整操作栏。

4

3 回答 3

5

You have two options:

  1. Use list navigation in the action bar and place a TabWidget at the top of your content view.
  2. Use tab navigation in the action bar and set a custom view with a Spinner

Be careful not to overload your users. Usually two types of navigation can be confusing.

于 2012-06-14T15:37:16.153 回答
0

对于操作项,如果您为不同的“屏幕”使用片段,那么它们可以注册以提供操作项setHasOptionsMenu(true);并通过覆盖来定义它们的操作onCreateOptionsMenu(Menu menu, MenuInflater inflater)。所以,一个好的设计规则,如果你不能简单地解释它,你可能做错了什么,应该改变设计。

这也可能是对 Android 设计的误用,与操作栏模式偏离得太远,这意味着你有一些看起来像带有导航的 ActionBar,但实际上你有一些其他的东西是你自己编造的。如果这是必需的,那么您不应该制作看起来像带有导航的操作栏的东西,因为用户会期望某些行为并得到不同的响应(混淆)。

最后,根据您的描述,似乎选项卡驱动列表导航,但列表导航具有视觉优先级(高于并基本上包含选项卡)。因此,如果选项卡通过列表导航的选择保持一致,但列表根据选项卡导航的选择而更改,则通过让选项卡具有优于列表导航的视觉优先级来更清晰地表示。所以,如果你保留两个导航,我会颠倒它们的顺序。也许尝试使用视图寻呼机而不是列表导航进行列表导航。Jake 也有一个很棒的视图寻呼机库http://viewpagerindicator.com/

于 2012-07-13T18:51:54.573 回答
0

我通过Setting the tab navigation in action barand实现了这一点Setting Spinner in Menu for navigation list。我会解释第二部分,因为第一部分是微不足道的。

定义Spinneraction_bar.xml

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

在活动中设置和绑定数据Spinner

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.action_bar, menu);
    MenuItem testSpinner = menu.findItem( R.id.menu_test_spinner );
    setupTestSpinner(testSpinner);
    return true;
}

private void setupTestSpinner(MenuItem item) {
    View view = item.getActionView();
    if (view instanceof Spinner) {
        Spinner spinner = (Spinner) view;
        spinner.setAdapter(ArrayAdapter.createFromResource(this,
                R.array.test,
                android.R.layout.simple_spinner_dropdown_item));
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                //Do something on item selection
            }

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

            }
        });
    }
}

现在,重写将响应选项卡更改的方法,并更改 Spinner 中的导航列表项。

于 2014-05-02T17:42:13.890 回答