-1

我正在尝试从 ActionbarSherlock 示例中添加列表导航。在示例中,有一些类似这样的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    setTheme(SampleList.THEME); //Used for theme switching in samples
    super.onCreate(savedInstanceState);

    setContentView(R.layout.list_navigation);
    mSelected = (TextView)findViewById(R.id.text);

    mLocations = getResources().getStringArray(R.array.locations);

    Context context = getSupportActionBar().getThemedContext();
    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.locations, R.layout.sherlock_spinner_item);
    list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    getSupportActionBar().setListNavigationCallbacks(list, this);
}

似乎就是这样。所以我很困惑在哪里可以添加导航标题。它还引用了

    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(
            context, R.array.locations, R.layout.sherlock_spinner_item);

而且我的代码不知道 R.array.locations 并给出了语法错误。但是 R.array.locations 不在示例中。我应该在我的布局目录中为它创建一个单独的文件吗?

谢谢!

4

2 回答 2

1

但是 R.array.locations 不在示例中

确实是

<string-array name="locations">
    <item>Home</item>
    <item>Email</item>
    <item>Calendar</item>
    <item>Browser</item>
    <item>Clock</item>
</string-array>
于 2013-06-04T16:38:23.783 回答
1

关于您的编译错误:您是否创建了一个名为“位置”的数组资源?

/res/值/数组

<resources>
    <string-array name="locations">
        <item>Foo</item>
        <item>Bar</item>
        <item>Baz</item>
    </string-array>
</resources>

关于为下拉菜单提供特殊的“图块”:即使它被称为“列表导航”,您实际上在操作栏中看到的(包括原生操作栏和 ActionBarSherlock 的)都是 Spinner。所以你可以给它任何 SpinnerAdapter,它会使用它。

如果您不熟悉适配器,我强烈建议您观看此视频。ListView 适配器和 Spinner 适配器之间的唯一区别是 getDropDownView() 方法,该方法创建出现在下拉菜单中的视图(其中 getView() 提供显示在微调器内容区域中的视图)。

于 2013-06-04T16:39:55.923 回答