4

我是Android新手,需要您的建议。我想要一个带有动作栏的活动,我还需要制表符(但不包括操作栏中的制表符)并在动作栏中下拉列表以进行导航。当我点击例如第一个选项卡中,操作栏中的导航列表应该填充数据,当秒选项卡,导航列表中应该填充另一个数据等时,操作项目也应该在更改选项卡时更改。当我从操作栏的导航列表中选择一些项目时,应该更新视图。我不知道如何制作。Android版式与动作栏和标签

我使用ActionBarSherlock作为操作栏,而且我已经使用TabHost和TabWidget与片段的标签,当我点击标签,然后片段被更改,但这不完全是我想要的,我不知道该怎么做接下来做。你可以帮帮我吗?

这里是一个屏幕:

enter image description here

当我点击选项卡1,则在动作条导航列表应该是TAB1 List1中,TAB1列表2等,以及应显示第一次的默认视图从列表(例如第一个Tab1 List1)或最后由用户视图从导航列表中选择。 当我点击标签2时,列表应该是Tab2 List1,Tab2 List2等,并且应该显示例如Tab2 List2视图。等 因此,每个选项卡调整操作栏。

+1

你想要什么的一些图像会非常有帮助。你可以用油漆或其他东西绘制它们。然后只需将它们作为图片发布在您的OP中。 – prolink007

回答

5

你有两个选择:在操作栏

  1. 使用列表导航和放置在TabWidget内容视图的顶部。
  2. 操作栏中使用标签导航,并设置自定义视图与Spinner

要小心,不要超负荷用户。通常两种类型的导航可能会造成混淆。

+0

谢谢杰克,但我不确定这是否正是我想要的。我知道这是一个复杂的,但我想有像三个分开的电子邮件应用程序的东西。另外,当我点击第一个标签,我有一个像电子邮件应用程序布局,当第二个标签,秒等我不知道如果我解释得很好。 –

+0

@贾克你可以请帮我这个:: http://stackoverflow.com/questions/20629665/strange-behaviour-of-actionbar-sherlock-searchview-above-api-level-11-after-call http:/ /stackoverflow.com/questions/20606647/progress-dialog-not-aligned-in-the-actionbarsherlock-after-api-level-11 – AndroidLearner

0

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

它也可能是Android设计的误用,与操作栏模式分道扬meaning,这意味着您看起来像带有导航的ActionBar,但您确实还有其他一些您自己编写的东西。如果这是必需的,那么你不应该做一些看起来像导航条的操作栏,因为用户会期望某些行为并得到不同的回应(混淆)。

最后,就你所描述的看来,标签驱动列表导航,但列表导航具有视觉优先级(在上面并且基本上包含标签)。因此,如果选项卡通过选择列表导航来保持一致,但列表会根据选项卡导航进行更改,则通过使选项卡具有视觉优先于列表导航的方式来更清晰地表示选项卡。所以,如果你保持导航,我会扭转他们的顺序。也许尝试使用视图分页器而不是列表导航的列表导航。杰克有一个伟大的库查看传呼机http://viewpagerindicator.com/

0

我通过Setting the tab navigation in action barSetting Spinner in Menu for navigation list达到此目的。我会解释第二部分,因为第一部分是微不足道的。在活动中Spinner

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

设置和绑定数据:

action_bar.xml定义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中。