Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式(从模块)获取强调色_Android_Android Custom View_Android Theme_Android Library - Fatal编程技术网

Android 以编程方式(从模块)获取强调色

Android 以编程方式(从模块)获取强调色,android,android-custom-view,android-theme,android-library,Android,Android Custom View,Android Theme,Android Library,我制作了一个自定义工具栏,效果很好,但由于我在模块上移动了源代码,我面临一些问题: 首先:我无法检索重音颜色,因为它引发了此崩溃: Caused by: java.lang.NoClassDefFoundError: com.kassisdion.lib.R$attr (这就是我尝试检索重音颜色的方式) 第二:我无法再访问android.support.v7.appcompat.R.attr.toolbarStyle值(在我静态访问它之前) 我认为这两个问题是有联系的,但我不知道出了什么问题

我制作了一个自定义工具栏,效果很好,但由于我在模块上移动了源代码,我面临一些问题:

首先:我无法检索重音颜色,因为它引发了此崩溃:

Caused by: java.lang.NoClassDefFoundError: com.kassisdion.lib.R$attr
(这就是我尝试检索重音颜色的方式)

第二:我无法再访问android.support.v7.appcompat.R.attr.toolbarStyle值(在我静态访问它之前)

我认为这两个问题是有联系的,但我不知道出了什么问题

更新:

我曾经覆盖过很多小部件,我使用这个构造函数:

public MyWidget(Context context, AttributeSet attrs) {
    this(context, attrs, android.support.v7.appcompat.R.attr.myWidgetStyle);
}
通常人们用
0
替换
android.support.v7.appcompat.R.attr.myWidgetStyle
,但这可能会导致一些问题(如编辑文本变得不可编辑)

经过大量研究,我发现,
android.support.v7.appcompat.R.styleable.
不能使用。(在上次更新中,他们将此字段设置为私有,可能与我的问题有关)


因此,我的解决方案是创建我自己的工具栏,而不是扩展android.support.v7.widget.Toolbar

以从主题中获得颜色:

@ColorInt
public static int getThemeColor
(
        @NonNull final Context context,
        @AttrRes final int attributeColor
)
{
    final TypedValue value = new TypedValue();
    context.getTheme ().resolveAttribute (attributeColor, value, true);
    return value.data;
}
例如,要获取强调色(来自片段):


我认为这取决于您导入的R类,请在文件顶部检查您的导入。您的解决方案与GetThemeACentColor2()相同,您应该在发布解决方案之前阅读问题。。。
@ColorInt
public static int getThemeColor
(
        @NonNull final Context context,
        @AttrRes final int attributeColor
)
{
    final TypedValue value = new TypedValue();
    context.getTheme ().resolveAttribute (attributeColor, value, true);
    return value.data;
}
final int color = UtilsColor.getThemeColor(getActivity(), R.attr.colorAccent);