问题标签 [declare-styleable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
316 浏览

android - 如何为自定义组件设置样式?

我有 2 个模块:
app
- layout.xml -styles.xml
-
attrs.xml
核心
- CustomComponent.java

在模块核心中有一个自定义组件,称为 CustomComponent,我在应用程序模块中使用它,并且我想在其中设置自定义样式,如下所示

布局.xml

样式.xml

attrs.xml

自定义组件.java

我想达到以下结果:

在 CustomComponent 中设置样式
customNS:chart_style="@style/MyCustomStyle"
后 ,我想找到这种样式,对其进行解析并获取所有需要的值。

但我找不到为此工作的代码。

您能否建议如何达到这样的结果?

0 投票
1 回答
3905 浏览

android - 错误MenuView,找不到属性 android:preserveIconSpacing

我已经更新了我的 eclipse 版本:4.2.2 和带有 API 23 的 android SDK。当我创建一个应用程序时,会出现这样的错误。

[2015-10-12 17:03:05 - appcompat_v7] 错误:在 MenuView 中,找不到属性 android:preserveIconSpacing

和警告

[2015-10-12 16:50:14 - appcompat_v7] 警告:无法写入 jarlist 缓存文件 D:\lolipop Workspace\appcompat_v7\bin\jarlist.cache

在此处输入图像描述 请帮我解决这个问题。

谢谢。

0 投票
1 回答
1990 浏览

java - 如何通过反射从声明样式的 TypedArray 中获取值?

我正在使用形状图像视图(https://github.com/siyamed/android-shape-imageview),当我想从形状图像视图定义的 declare-styleable 中获取值时:

我有问题。我对形状图像视图的 xml 用法:

这是我的代码:

IdHelper 中定义的方法:

当我运行我的应用程序时,我得到了日志:

01-11 17:04:07.244 3744-3744/? W/System.err:引起:java.lang.reflect.InvocationTargetException 01-11 17:04:07.247 3744-3744/?W/System.err: at java.lang.reflect.Constructor.constructNative(Native Method) 01-11 17:04:07.247 3744-3744/? W/System.err:在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 01-11 17:04:07.247 3744-3744/?W/System.err:在 android.view.LayoutInflater.createView(LayoutInflater.java:594) 01-11 17:04:07.247 3744-3744/?W/System.err: ... 57 更多 01-11 17:04:07.247 3744-3744/? W/System.err:原因:java.lang.UnsupportedOperationException:无法转换为维度:type=0x10 01-11 17:04:07.252 3744-3744/?W/System.err:在 android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:464) 01-11 17:04:07.252 3744-3744/?W/System.err:在 cn.jmessage.android。uikit.chatting.shader.ShaderHelper.init(ShaderHelper.java:80) 01-11 17:04:07.252 3744-3744/? W/System.err:在 cn.jmessage.android.uikit.chatting.shader.BubbleShader.init(BubbleShader.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.setup(ShaderImageView.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.(ShaderImageView.java:36) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.BubbleImageView.(BubbleImageView.java:27) 01-11 17:04:07.253 3744-3744/?W/System.err: ... 60 更多 45) 01-11 17:04:07.253 3744-3744/? W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.setup(ShaderImageView.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.(ShaderImageView.java:36) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.BubbleImageView.(BubbleImageView.java:27) 01-11 17:04:07.253 3744-3744/?W/System.err: ... 60 更多 45) 01-11 17:04:07.253 3744-3744/? W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.setup(ShaderImageView.java:45) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.ShaderImageView.(ShaderImageView.java:36) 01-11 17:04:07.253 3744-3744/?W/System.err:在 cn.jmessage.android.uikit.chatting.BubbleImageView.(BubbleImageView.java:27) 01-11 17:04:07.253 3744-3744/?W/System.err: ... 60 更多 27) 01-11 17:04:07.253 3744-3744/? W/System.err: ... 60 更多 27) 01-11 17:04:07.253 3744-3744/? W/System.err: ... 60 更多

我怎么解决这个问题?

0 投票
1 回答
1862 浏览

android - 棒棒糖前的 getTheme().resolveAttribute() 替代方案

我一直在努力使用 pre-lollipop API 获取样式属性。

用棒棒糖,我用

这完美无缺,我在 API 版本 21 下没有找到类似的方法。(minAPI = 16)

我尝试使用getTheme().obtainStyledAttributes(). 但是,我没有AttributeSet提供该方法,因为我在活动中使用它。我做的事情是完全错误的,还是解决了低于 21 的 API 版本不支持的样式属性?

0 投票
2 回答
1568 浏览

android - 安卓:方法属性

在属性中如何接受方法作为值?就像在视图的 onClick 属性中一样:

如何定义接受方法的自定义属性?

我知道我们<declare-styleable>在资源中使用,但我们如何让它接受方法?

0 投票
1 回答
569 浏览

android - 如何将布局宽度/高度的值传递给自定义视图类

我正在创建一个具有扩展线性布局的类(圆形按钮)的模块。它包含一个图像视图和一个文本视图。

在 XML 文件中声明圆形按钮视图时,会分配 layout_width 和 layout_height 值。我希望图像视图尺寸与分配的布局尺寸成比例。因此,如何将布局尺寸传递给视图类,以便我可以将比例尺寸分配给图像视图?

PS:这个问题不涉及传递自定义属性。但处理将android:layout_widthand传递android:layout_height给自定义 UI 类。

0 投票
0 回答
65 浏览

android - 如何将默认参数设置为自定义 UI 类?

我创建了一个名为 RoundedButton 的自定义类,它扩展了 Button。我想分配一些默认参数。怎么办?

在我实现下面的 xml 代码后没有任何变化。基本上默认情况下没有添加样式。我不知道我错过了什么。

在样式.xml

在 attrs.xml

显现:

RoundButton.java

我已经使用这个这个来尝试解决它。

编辑:早些时候我有一个问题,背景是浅灰色并且没有改变,我发现这个问题是因为我后来在 UI 类中的一行代码。

0 投票
0 回答
225 浏览

android - Facebook Shimmer 集成错误

在集成 Facebook 微光时,当我尝试演示项目时,它运行良好。但是现在当我将它集成到我的实际项目中时,它给了我以下错误:

错误:(593) 属性“形状”已用不兼容的格式定义

谁能帮我解决这个问题?

0 投票
1 回答
1277 浏览

java - 如何获取枚举自定义属性的所有可能值?

假设我的my_custom_enum视图有一个自定义属性:

有没有办法在代码中获取这个枚举的所有可能值?

换句话说:

我想有一种方法来获取值7512222和。 这些值也很好,但不是强制性的。12414names

0 投票
0 回答
389 浏览

android - 如何使用自定义属性(如错误)使 EditText 的颜色可样式化?

我想制作一个 EditText,当满足“错误”条件时,其文本变为红色。我知道 TextInputLayout 有一个内置的错误状态,但我不想在输入区域下面有文本,我不想在我的项目中包含支持设计库(这是一个 sdk - 所以其他人将包括它)。但是,我的 EditText总是显示错误状态,我不知道为什么。

到目前为止我的努力:

首先,我声明一个可样式化的东西。看起来不错。

然后我在我的res/colors目录中创建一个选择器。现在,如果设置了我的特殊属性,我真的更喜欢只覆盖颜色。但是,如果我必须复制android:state-pressed等 状态及其每个组合,我可以这样做(并且具有相同的结果,请参见下文)。这个文件是res/color/red_on_error_dark.xml.

然后我将我的新时尚事物添加到我的自定义类的 XML 包含中:

到目前为止,一切都很好。现在,我创建了扩展 EditText 的类:

所有这些都很容易组合在一起。但是,当我运行代码时,它总是将文本绘制为红色。

我已经验证的事情:

  1. 我正确设置了错误/无错误状态。
  2. onCreateDrawableState代码在非错误时间内通过该方法!它跳过mergeDrawableStates具有额外属性的方法。(我还添加了一个else子句并返回了一个没有添加额外空格的 drawableState)。
  3. 即使该属性是布尔值,并且理论上应该能够接受 true 或 false 的值,我还是添加了一个单独的 attr STATE_VALID,并将我的选择器更改为如下。

我什至将选择器更改为详尽无遗:

而且我走得更远,将不必要的额外状态与一堆 结合起来android:state_blah,所以我的选择器中有 20 种不同的情况。(实际上,在这种情况下,它总是保持白色,也好不了多少)。

现在,我真正非常喜欢的是声明一个可样式化的值,其他人(使用我的 sdk)可以设置一个值,如果他们愿意的话。但是现在我很高兴知道为什么文本总是红色的。

编辑:一个完全合法的解决方法是当我在MySpecialEditText. 这是我的临时解决方案,但它阻止了某人使用我的控件并custom:state_error=@color/some_custom_color在他们选择的主题中添加一个 或类似的值。只要我手动调用 setTextColor,错误颜色总是我特定的红色阴影。

我可以更进一步,为错误颜色添加一个新的构造函数或设置器,但这对于库来说不是一个很好的解决方案。如果您使用该库并实例化我的控件,它将获取EditText您已经拥有的所有样式,因此它看起来很原生。如果您想自定义错误颜色,我希望您能够在一个地方为您的整个应用程序执行此操作,其中包含一段可以由设计人员运行的漂亮 XML。

有任何想法吗?先发制人地感谢所有回答者和尝试回答者。