使用v7支持Action Bar意味着将drawable复制到项目中?

时间:2013-11-27 00:10:32

标签: android android-actionbar android-support-library

我在这里有一个未解决的问题Strange SearchView Behaviour但是我没有答复,但我怀疑这与此问题有关。

我在Eclipse中启动了一个新的应用程序项目,只使用了File - >新的等等我随后根据Android开发文档使用v7支持库添加了Action Bar支持,我现在有一个非常简单的Activity如下...

public class TestActivity extends ActionBarActivity
    implements ActionBar.TabListener {

    private ActionBar bar;

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

        bar = getSupportActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this));
        bar.addTab(bar.newTab().setText("Tab 2").setTabListener(this));
        bar.addTab(bar.newTab().setText("Tab 3").setTabListener(this));
    }

    // ActionBar.TabListener methods here - currently unused
}
除了按照文档中的说明将应用主题设置为Theme.AppCompat之外,我没有对样式或主题做任何事情。

当我启动应用程序时,我看到了......

enter image description here

...但经过大量的搜索和实验,我发现我所要做的就是手动将v7-appcompat库中的abc_tab_selected.9.png复制到我项目的/ res / drawable-hdpi目录中,然后我得到了这(这更像是我期待的)......

enter image description here

那场景的哪一部分被打破了?我是否遗漏了文档中的内容(我已经多次访问过)或者我是否真的需要手动将资源复制到我的项目中以使Action Bar正确设置样式?我之前使用过ActionBarSherlock,只要我设置了正确的应用主题,事情就能正常工作 - 我没有做任何其他事情。

1 个答案:

答案 0 :(得分:0)

  

我是否真的必须手动将资源复制到我的项目中才能使Action Bar正确设置样式?

是。支持库作为jar文件提供。并且jar文件不支持资源,因此您必须手动将它们复制到项目中。

这是v7-appcompat项目的README file所述:

  

技术上没有源,但src文件夹是必需的   确保构建系统正常工作。内容实际上是位于   在libs / android-support-v7-appcompat.jar中。 随附的资源   也必须包含在申请表中。

这就是docs所说的:

  

您无法将库项目导出为自包含的JAR文件,如   你会做一个真正的图书馆。相反,您必须编译库   间接地,通过引用依赖应用程序中的库   并构建该应用程序。

  

我以前使用过ActionBarSherlock,而且事情非常正常

ActionBarSherlock是一个完整的库(或文档所说的“真正的库”),拥有自己的资源,并没有作为jar发布。