我的主题基于Theme.AppCompat.Light如下:
<style name="core" parent="Theme.AppCompat.Light" >
<!-- Material, Yo!-->
<item name="colorPrimary">@color/theme_main_color</item>
<item name="colorPrimaryDark">@color/deep_purple</item>
<item name="colorAccent">@color/theme_accent_color</item>
<item name="android:navigationBarColor" tools:ignore="NewApi">?attr/colorPrimary</item>
<!-- Toolbar -->
<item name="theme">@style/my_toolbar_theme</item>
<item name="drawerArrowStyle">@style/my_drawer_arrow</item>
<!-- Actionbar -->
<item name="android:actionBarDivider">@null</item>
<item name="android:actionBarTabStyle">@null</item>
<item name="android:actionBarTabBarStyle">@null</item>
<!-- Contextual Actionbar -->
<item name="windowActionModeOverlay">true</item>
<item name="actionModeBackground">?attr/colorAccent</item>
<item name="actionModeStyle">@style/my_actionmode_style</item>
</style>
<style name="my_drawer_arrow" parent="Widget.AppCompat.DrawerArrowToggle" >
<item name="spinBars">true</item>
<item name="color">@color/theme_accent_color</item>
</style>
<style name="my_toolbar_style">
<item name="android:id">@id/toolbar</item>
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">match_parent</item>
<item name="android:background">?attr/colorPrimary</item>
<item name="android:elevation" tools:ignore="NewApi">5dp</item>
</style>
<style name="my_actionmode_style" parent="Widget.AppCompat.Light.ActionMode.Inverse" >
<item name="titleTextStyle">@style/my_actionmode_title_style</item>
<item name="subtitleTextStyle">@style/my_actionmode_subtitle_style</item>
</style> …Run Code Online (Sandbox Code Playgroud) 当使用最新版本的兼容性lib(即compat-lib的v18,与4.3 Android版本一起发布)并使用操作栏中的列表导航菜单模式时,我将遇到Nullpointer异常.该错误发生在2.3.3版本的android中.我相信这是因为在这个版本(以及其他版本)中,使用的整个操作栏代码是compat-lib代码.
当我点击列表菜单(在操作栏上)时,我的应用程序崩溃,我在logcat收到以下错误:
07-30 18:17:59.296: E/AndroidRuntime(14701): FATAL EXCEPTION: main
07-30 18:17:59.296: E/AndroidRuntime(14701): java.lang.NullPointerException
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.support.v7.internal.widget.ListPopupWindow$DropDownListView.measureHeightOfChildrenCompat(ListPopupWindow.java:1317)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.support.v7.internal.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1062)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.support.v7.internal.widget.ListPopupWindow.show(ListPopupWindow.java:514)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.support.v7.internal.widget.SpinnerICS$DropdownPopup.show(SpinnerICS.java:758)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.support.v7.internal.widget.SpinnerICS.performClick(SpinnerICS.java:443)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.view.View$PerformClick.run(View.java:9109)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.os.Handler.handleCallback(Handler.java:587)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.os.Looper.loop(Looper.java:130)
07-30 18:17:59.296: E/AndroidRuntime(14701): at android.app.ActivityThread.main(ActivityThread.java:3683)
07-30 18:17:59.296: E/AndroidRuntime(14701): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 18:17:59.296: E/AndroidRuntime(14701): at java.lang.reflect.Method.invoke(Method.java:507)
07-30 18:17:59.296: E/AndroidRuntime(14701): at …Run Code Online (Sandbox Code Playgroud) android android-actionbar android-support-library android-actionbar-compat
我刚刚在我的项目中包含了android v7-appcompat库.我已经成功地将jar添加到构建路径中,现在我正在使用Theme.AppCompat主题.现在,我得到了这个奇怪的错误:
[Dex Loader]无法执行dex:多个dex文件定义了Landroid/support/v7/app/ActionBar $ Callback; [2013-10-09 11:11:50 - DelTest2]转换为Dalvik格式失败:无法执行dex:多个dex文件定义Landroid/support/v7/app/ActionBar $ Callback;
编辑
我的项目现在包含三个文件夹,每个文件夹包含android v7 appcompat:
+Android Private Libraries
+Android Dependencies
+Referenced Libraries
Run Code Online (Sandbox Code Playgroud)
为了使我的项目有效,我必须删除这些库中的哪一个?
我正在android操作栏中实现自定义视图.问题是在某些情况下我需要将操作栏的高度加倍以允许视图完全显示.我可以使用自定义主题设置高度,但此高度是静态的.
是否可以以编程方式更改操作栏高度?
提前致谢
我正在检查如何将菜单项的图标更改为进度条加载动画.我试过了
<item android:id="@+id/action_favorite"
android:icon="@drawable/ic_action_heart"
clasificados:showAsAction="always|collapseActionView"
clasificados:actionViewClass="android.widget.ProgressBar"/>
Run Code Online (Sandbox Code Playgroud)
我正在使用分割操作栏模式.当我点击它时,图标消失,进度条显示在顶部栏上.
我需要改变什么?
android android-progressbar android-menu android-actionbar android-actionbar-compat
更新我的项目以使用appcompat库到版本21.0.0后,我遇到了使用gridview multichoice模态事件创建的上下文菜单的问题.相同的代码适用于appcompat v20.
这是主要活动的相关部分:
public class MainActivity extends android.support.v7.app.ActionBarActivity
implements AbsListView.MultiChoiceModeListener {
...
mGridView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
mGridView.setMultiChoiceModeListener(this);
@Override
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
mode.setTitle("Started");
mode.getMenuInflater().inflate(R.menu.context_menu, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这是context_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_item_share"
android:title="Share..."
app:showAsAction="ifRoom"
android:icon="@android:drawable/ic_menu_share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider" />
</menu>
Run Code Online (Sandbox Code Playgroud)
这就是我要回的堆栈跟踪:
java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setActionProvider()
at android.support.v7.internal.view.menu.MenuItemImpl.setActionProvider(MenuItemImpl.java:628)
at android.support.v7.internal.view.menu.MenuItemWrapperICS.setSupportActionProvider(MenuItemWrapperICS.java:315)
at android.support.v4.view.MenuItemCompat.setActionProvider(MenuItemCompat.java:345)
at android.support.v7.internal.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:473)
at android.support.v7.internal.view.SupportMenuInflater$MenuState.addSubMenuItem(SupportMenuInflater.java:485)
at android.support.v7.internal.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:194)
at android.support.v7.internal.view.SupportMenuInflater.inflate(SupportMenuInflater.java:118)
at creativesdk.adobe.com.myapplication.MainActivity.onCreateActionMode(MainActivity.java:71)
at android.widget.AbsListView$MultiChoiceModeWrapper.onCreateActionMode(AbsListView.java:6165)
at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.onCreateActionMode(SupportActionModeWrapper.java:151)
at android.support.v7.app.ActionBarActivityDelegateBase$ActionModeCallbackWrapper.onCreateActionMode(ActionBarActivityDelegateBase.java:1367)
at android.support.v7.internal.app.WindowDecorActionBar$ActionModeImpl.dispatchOnCreate(WindowDecorActionBar.java:1012)
at android.support.v7.internal.app.WindowDecorActionBar.startActionMode(WindowDecorActionBar.java:510)
at android.support.v7.app.ActionBarActivityDelegateBase.startSupportActionMode(ActionBarActivityDelegateBase.java:576) …Run Code Online (Sandbox Code Playgroud) android android-support-library contextual-action-bar android-actionbar-compat
我的项目,直到前几天我用大侦探动作条,但我决定要在整个动作条样式更改为新材料的设计.在我的旧主题背面和溢出图标我有一些自定义图标设置在我的主题.但是在appcompat上我尝试在我的主题上定义它,我在工具栏上使用它,但它不起作用.谁知道如何使这成为可能?
我在工具栏上使用的主题(使用资产工作室生成):
<style name="Theme.Themewiz" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/ActionBar.Solid.Themewiz</item>
<item name="android:actionBarItemBackground">@drawable/selectable_background_themewiz</item>
<item name="android:popupMenuStyle">@style/PopupMenu.Themewiz</item>
<item name="android:dropDownListViewStyle">@style/DropDownListView.Themewiz</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Themewiz</item>
<item name="android:actionDropDownStyle">@style/DropDownNav.Themewiz</item>
<item name="android:actionModeBackground">@drawable/cab_background_top_themewiz</item>
<item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_themewiz</item>
<item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Themewiz</item>
<!-- Light.DarkActionBar specific -->
<item name="android:actionBarWidgetTheme">@style/Theme.Themewiz.Widget</item>
<item name="android:actionOverflowButtonStyle">@style/Theme.AppCompat.Overflow</item>
</style>
<style parent="@style/Widget.AppCompat.ActionButton.Overflow" name="Theme.AppCompat.Overflow">
<item name="android:src">@drawable/ic_action_overflow</item>
</style>
Run Code Online (Sandbox Code Playgroud)
工具栏xml:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimaryDark"
app:theme="@style/Theme.Themewiz"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Run Code Online (Sandbox Code Playgroud) 我正在使用appcompat库和工具栏,我在我的应用程序中实现了一个搜索视图.但我希望在展开时删除搜索视图图标.
这是我的菜单xml文件:
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_search"
android:title="@string/action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView"/>
Run Code Online (Sandbox Code Playgroud)
这就是我给菜单充气的方式:
getMenuInflater().inflate(R.menu.main, menu);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
searchView.setQueryHint(getString(R.string.search_hint));
return super.onCreateOptionsMenu(menu);
Run Code Online (Sandbox Code Playgroud)
这就是我要删除的内容:

android android-appcompat android-actionbar searchview android-actionbar-compat
我试图在操作栏的默认标题出现的同一位置显示一个微调器.我按照类似SO案例的说明进行操作,所以我设法消除了标题,但旋转器的位置仍然没有与左边对齐,正如你从这个屏幕截图中看到的那样

以下是我重现此案例的应用程序的主要定义:
AndroidMenifest.xml:
<application
android:label="app"
android:icon="@drawable/ic_launcher"
android:theme="@style/Theme.AppCompat" >
...
<activity
android:name="gm.activities.ViewAllActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="gm.activities.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
menu_view_all.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="gm.activities.ViewAllActivity">
<item android:id="@+id/spinner"
android:title="will be replaced anyway"
app:showAsAction="ifRoom"
app:actionViewClass="android.widget.Spinner"
android:layout_gravity="left"
android:gravity="left"/>
<item android:id="@+id/action_settings" android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)
以及相关活动:
public class ViewAllActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_all_activity);
getSupportActionBar().setDisplayShowTitleEnabled(false);
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_view_all, …Run Code Online (Sandbox Code Playgroud) android alignment android-ui android-actionbar android-actionbar-compat
该应用程序目前有表格和酒吧定制(由以前的家伙)从碎片到复制猫苹果设计.
我想转向Android操作栏以提供Android体验和常规行为.
我应该实施Action Bar Sherlock还是Action Bar Compat?
专业ABS:
Pro ABCompat:
其他论据有何决定?我应该选哪一个?
从我的角度来看,如果我成功地使用固定标签执行操作栏,则操作栏兼容性是最佳选择(但不是很多).
感谢你们对我的帮助!(甚至提供我错过的论据)
android actionbarsherlock android-actionbar android-actionbar-compat