我正在尝试在我自己的项目中使用 ActionBarCompat。我已经打开了示例项目(http://developer.android.com/resources/samples/ActionBarCompat/index.html),但我不知道如何自己实现它。
我找不到任何类型的教程。我应该把这个项目作为图书馆吗?有人可以给我一些指示吗?
我正在尝试在我自己的项目中使用 ActionBarCompat。我已经打开了示例项目(http://developer.android.com/resources/samples/ActionBarCompat/index.html),但我不知道如何自己实现它。
我找不到任何类型的教程。我应该把这个项目作为图书馆吗?有人可以给我一些指示吗?
至于实现,只要坚持MainActivity.java
类下提供的示例代码即可。您可以在此处或下方找到它<your local android-sdks folder>/samples/android-15/ActionBarCompat/src/com/example/android/actionbarcompat/MainActivity.java
。一般来说,您需要做的就是:
ActionBarActivity
onCreateOptionsMenu()
,使其膨胀您在步骤 #1 中编码的菜单onOptionsItemSelected()
,以便您在用户点击您在步骤 #1 中定义的任何 ActionBar 项目时处理该事件。我认为用 ActionBarCompat 代码构建一个 Android 库项目是有意义的;那么您可以从您的自定义 Android 项目中引用它。请记住,它是根据Apache 许可证 2.0 版获得许可的。
这个答案描述了如何使用新的 ActionBarCompat 库(2013 年 7 月)。
在Android Studio中,打开build.gradle
并添加:
dependencies {
compile 'com.android.support:appcompat-v7:18.0.+'
}
在Eclipse中,根据其中的代码创建一个库项目sdk\extras\android\support\v7\appcompat
并将其添加到您的项目中。
活动要延长ActionBarActivity
。
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.app.ActionBar;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
ActionBar ab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ab = getSupportActionBar();
ab.setTitle("Test");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView =
(SearchView) MenuItemCompat.getActionView(searchItem);
return super.onCreateOptionsMenu(menu);
}
}
主题必须是(或扩展)Theme.AppCompat
主题之一,例如:
<activity android:theme="@style/Theme.AppCompat.Light" ... />
资料来源:如何将 ActionBarCompat 添加到您的项目中,Gabriele Mariotti 的博客文章