标签: android-appcompat

NoClassDefFoundError:android.support.v7.internal.view.menu.MenuBuilder

运行Android 4.2的三星设备上的Android appcompat v7库存在问题.在我的开发者控制台中,我不断遇到以下堆栈跟踪崩溃:

java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
    at android.support.v7.widget.PopupMenu.<init>(PopupMenu.java:66)
    at com.[my-package-name].CustomActivity$5.onClick(CustomActivity.java:215)
    at android.view.View.performClick(View.java:4222)
    at android.view.View$PerformClick.run(View.java:17620)
    at android.os.Handler.handleCallback(Handler.java:800)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:194)
    at android.app.ActivityThread.main(ActivityThread.java:5391)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

这是CustomActivity.java的第215行:

PopupMenu popup = new PopupMenu(CustomActivity.this, mImageViewMenu);
Run Code Online (Sandbox Code Playgroud)

崩溃来自一系列设备,但总是三星,而且始终是Android 4.2.

快速的网络搜索让我相信很多人都有同样的问题,我试图解决这个问题的一些步骤是:

  • 检查Android项目属性,确保正确添加appcompat库.
  • 检查Java Build Path Order和Export项目属性,确保选中Android Dependencies和Android Private Libraries.
  • 确认该类包含在库中(android.support.v7.internal.view.menu.MenuBuilder).
  • 确认R.java位于android.support.v7.appcompat的gen目录中.
  • 确认AppCompat主题包含在Manifest.xml活动中.
  • 清理并重建项目.

尽管有这些步骤,尽管它在所有其他设备和Android版本上工作,但崩溃报告仍然存在.

java eclipse android android-appcompat

170
推荐指数
5
解决办法
4万
查看次数

与ActionBarActivity相比,AppCompatActivity的增强是什么?

android.support.v7.app.AppCompatActivity 昨天作为新功能添加到最新的v7支持库中.

据说ActionBarActivity已经弃用了新的AppCompatActivity,这AppCompatActivity是使用支持库操作栏功能的活动的基类.那么,什么是新的功能AppCompatActivityActionBarActivity?做什么改进AppCompatActivity有过ActionBarActivity?有什么好处AppCompatActivity?有人可以提供一些样品吗?

任何提示都表示赞赏.并提前感谢.

PS:最让我感到惊讶的是,AppCompatActivityandroid.support.v4.app.FragmentActivity直接的父类延伸出来的是什么ActionBarActivity!我的意思是现在实际上ActionBarActivity可以做任何AppCompatActivity可以做的事情,为什么Android会推出后者呢?

同时,我看到了一篇博客文章,指出:" 这不是从命名ActionBarActivityAppCompatActivity,内部逻辑AppCompat通过可用AppCompatDelegate ",那么什么是" 内在逻辑的" AppCompat?有什么可以AppCompatDelegate做什么?有人会发布一些关于此的代码吗?

android android-appcompat android-actionbaractivity appcompatactivity

164
推荐指数
5
解决办法
9万
查看次数

在appcompat-v7中删除工具栏中的标题

文件Toolbar

如果应用使用徽标图片,则应强烈考虑省略标题和副标题.

删除标题的正确方法是什么?

android android-appcompat android-actionbar android-toolbar

161
推荐指数
7
解决办法
11万
查看次数

Material Design没有样式化警报对话框

我已将appCompat材质设计添加到我的应用程序中,似乎警报对话框未使用我的primary,primaryDark或强调颜色.

这是我的基本风格:

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="android:textColorPrimary">@color/action_bar_gray</item>
</style>
Run Code Online (Sandbox Code Playgroud)

根据我的理解,对话框按钮文本也应该使用这些颜色.我的理解是错的还是我还需要做些什么?


解:

明确的答案让我走上正轨.

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="android:actionModeBackground">@color/apptheme_color_dark</item>
    <item name="android:textColorPrimary">@color/action_bar_gray</item>
    <item name="sdlDialogStyle">@style/DialogStyleLight</item>
    <item name="android:seekBarStyle">@style/SeekBarNavyTheme</item>
</style>

<style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-support-library material-design material-components-android

160
推荐指数
3
解决办法
10万
查看次数

如何使用appCompat 22.1及更高版本的新AlertDialog并设置其样式

我正在尝试从默认的android迁移AlertDialog到appCompat-22.1中包含的新的android 到目前为止我了解你只需导入android.support.v7.app.AlertDialog包以便使用它.

但我怎么样呢呢?例如,更改正/负按钮颜色,标题颜色,消息颜色和背景颜色?

android android-appcompat android-alertdialog android-support-library

149
推荐指数
4
解决办法
13万
查看次数

创建看起来像材料设计准则的SearchView

我目前正在学习如何将我的应用程序转换为Material设计,现在我有点卡住了.我添加了工具栏,我的导航抽屉覆盖了所有内容.

我现在正在尝试创建一个类似于材料指南中的可扩展搜索: 在此输入图像描述

这就是我现在所拥有的,我无法弄清楚如何使它如上所述:
我的搜索

这是我的菜单xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Run Code Online (Sandbox Code Playgroud)

这有效,我得到一个扩展到SearchView的菜单项,我可以很好地过滤我的列表.虽然看起来不像第一张照片.

我尝试使用MenuItemCompat.setOnActionExpandListener(),R.id.action_search所以我可以将主页图标更改为后退箭头,但这似乎不起作用.侦听器中没有任何内容被触发.即使它起作用,它仍然不会非常接近第一张图像.

如何在新的appcompat工具栏中创建看起来像材质指南的SearchView?

android toolbar android-appcompat searchview material-design

132
推荐指数
7
解决办法
13万
查看次数

使用AppCompat-v7在操作栏/工具栏中显示图标21

我试过这些 - 但仍然没有像以前那样看到图标:

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)

当我使用自定义工具栏时似乎工作 - 但这会迫使我触摸所有布局 - 有更好的方法吗?

android android-appcompat

128
推荐指数
8
解决办法
15万
查看次数

如何设置appcompat-v7工具栏的样式,如Theme.AppCompat.Light.DarkActionBar?

我正在尝试Theme.AppCompat.Light.DarkActionBar使用新的支持库工具栏重新创建外观.

如果我选择Theme.AppCompat.Light我的工具栏会很轻,如果我选择Theme.AppCompat它会很暗.(从技术上讲,你必须使用该.NoActionBar版本,但据我所知,唯一的区别是

<style name="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在已经没有Theme.AppCompat.Light.DarkActionBar天真了,我认为只做自己的就好了

<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然而,有了这个,我的工具栏仍然是Light主题.我花了几个小时现在尝试混合Dark(基础)主题和Light主题的不同组合,但我找不到一个组合,让我在除工具栏之外的所有东西上都有浅色背景.

有没有办法让AppCompat.Light.DarkActionBar导入的外观android.support.v7.widget.Toolbar

android android-appcompat android-theme android-toolbar

103
推荐指数
6
解决办法
15万
查看次数

如何为Spinner的下拉列表设置不同的主题?

示例用法:

在此输入图像描述

旋转器是黑暗的主题,但我希望下拉菜单是主题.

android android-appcompat

102
推荐指数
1
解决办法
2万
查看次数

如何从Android appcompat v7 21库实现DrawerArrowToggle

所以现在Android 5.0发布了,我想知道如何实现动画操作栏图标.

这个库在这里实现它很好但是因为appcompat v7库有它如何实现它?

该库在themes.xml中引用它

 <item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item>
Run Code Online (Sandbox Code Playgroud)

在这种风格下

 <style name="Base.V7.Theme.AppCompat" parent="Platform.AppCompat">
Run Code Online (Sandbox Code Playgroud)

UPDATE

我使用v7 DrawerToggle实现了这个功能.但是我无法设计它.请帮忙

我在v7 styles_base.xml中找到了它的样式

<style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="">
    <item name="color">?android:attr/textColorSecondary</item>
    <item name="thickness">2dp</item>
    <item name="barSize">18dp</item>
    <item name="gapBetweenBars">3dp</item>
    <item name="topBottomBarArrowSize">11.31dp</item>
    <item name="middleBarArrowSize">16dp</item>
    <item name="drawableSize">24dp</item>
    <item name="spinBars">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我把它添加到我的样式中并且没有用.也添加到我的attr.xml

<declare-styleable name="DrawerArrowToggle">
    <!-- The drawing color for the bars -->
    <attr name="color" format="color"/>
    <!-- Whether bars should rotate or not during transition -->
    <attr name="spinBars" format="boolean"/>
    <!-- The total size of the drawable -->
    <attr name="drawableSize" format="dimension"/>
    <!-- The max gap …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-actionbar drawertoggle android-5.0-lollipop

97
推荐指数
4
解决办法
10万
查看次数