问题标签 [android-custom-attributes]
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.
android - 在 android 中更改 AttributeSet 值
我有自定义视图,它将属性集(xml 值)作为构造函数值
在片段类中,我将视图设置为
其中自定义视图包含各种值,例如高度、宽度、填充等。
我想根据所需条件修改这些值并将其设置回自定义视图。我在onDraw方法中放置了设置宽度高度代码并调用了无效视图。但是如果我在 CustomView 类中调用invalidate方法,上述方法将设置每次。如何克服这个问题,以便我只能在构造函数中传递修改后的属性集值。?
编辑:我需要修改在属性构造函数期间设置的视图值(使用新值初始化),以便我将获得具有新值的刷新视图。覆盖@OnDraw 或'Invalidate' 对我来说不是一个好的功能,在invalidate 里面我已经编写了将在每一秒间隔内执行的方法。
android - 将默认颜色设置为 Android 库
所以我有一个 Android库,我希望其他人在使用它时能够轻松地自定义它的颜色。问题是颜色不仅仅是一个属性(如视图背景),它更像是一种主题颜色(视图背景、文本颜色、按钮的笔触等......)所以我不能只将它作为视图属性传递。所以我最终使用了 acolor reference
并在样式、布局和可绘制对象中使用它:
颜色.xml:
布局.xml:
库项目中的styles.xml:
这很好用,当有人使用我的库时,他必须声明他希望你在他的主题中使用的颜色:
应用项目中的styles.xml:
问题是这样的:我想为这个库提供一个默认的配色方案。现在可以使用 2 个选项执行它:
- 使用默认颜色集声明我自己的主题,用户将需要从我的继承他的主题。
- 在我的 color.xml 中添加一些 default_color,以便用户能够将其用作主题中的颜色。
第一个真的很糟糕,因为我不能强迫用户使用特定的应用程序主题(如 AppCompact.Light)。第二个也不是很好,因为我希望用户能够无缝地使用默认设置,并且我在主题中有几种颜色需要他设置。
您认为有没有其他方法可以让其他用户轻松使用这些颜色?
谢谢。
android - 从主题中设置自定义 TextInputLayout 属性
在设计库源代码中,我们可以找到这一行:
我想通过errorTextAppearance属性改变错误文本的颜色
我知道如何通过 TextInputLayout xml 声明中的 app:{atribut-name} 对其进行自定义,但是如何从我的主题定义中自定义其中一个属性?
android - x 与 canvas.draw 坐标与自定义文本视图不起作用
我已经成功地创建了我的这个问题的答案(在 andorid 中左可绘制与文本对齐) ,但问题是 canvas.drawText x 坐标无法正常工作,因为 x 坐标不会影响文本的位置。
我只是想删除重叠并给出可绘制对象和画布上文本之间的距离。
这是我的代码如下,
}
这是attr,
android - 为什么自定义 android 视图不将 TypedArray 作为参数
我正在学习在 Android 中编写自定义视图,并阅读文档。
自定义视图被传递一个 AttributeSet 作为参数。但是文档说要使用以下代码获取 TypedArray
那么为什么它不只是传递一个 TypedArray 开始呢?你什么时候想检查 AttributeSet 呢?
该文档指定您不想检查原始 AttributeSet,因为...
- 属性值内的资源引用未解析
世界卫生大会??这是否意味着如果我在 xml 中有一个自定义属性 x=10,它在解决之前不会等于 10?
- 不应用样式
如果我在 xml x=10 中有一个自定义属性,那么应用样式实际上会做什么?
android - TypedArray 的 getResourceId 方法
我正在阅读有关getResourceId()方法的文档。它说:
检索索引处属性的资源标识符。请注意,在检索整个 TypedArray 对象时,属性资源已解析。因此,此函数将返回找到的最终资源值的资源标识符,不一定是属性指定的原始资源。
所以
- 第一段很清楚:
检索索引处属性的资源标识符。
- 第二个也很清楚:
请注意,在检索整个 TypedArray 对象时,属性资源已解析。
- 但是第3段是什么意思? 为什么它 不一定能返回原始资源ID?
因此,此函数将返回找到的最终资源值的资源标识符,不一定是属性指定的原始资源。
android - Android Resources.getIdentifier 为自定义属性返回错误值
最近我正在做一个使用Resources.getIdentifier()
很多的项目。一切都很有趣,但是当我尝试使用此方法检索自定义属性时会出现问题。
所以我在 xml 中声明了一些属性
然后我在xml中应用这个属性
在 FloatExpandMenuItem
ResourceUtils.getResId 是 Resources.getIdentifier 的包装器,如下所示
奇怪的事情发生了,我尝试在 FloatExpandMenuItem 中调试,ResourceUtils.getResId 在检索标签、图标、showDot 属性时总是返回 0。
所以我想知道在使用 Resources.getIdentifier() 时尝试处理自定义属性时应该如何更改代码?
android - 为什么通过自定义视图属性传递样式时文本不是粗体?
假设我有以下.xml
风格:
我想通过属性将它传递给自定义视图:
在自定义视图中,我获取样式属性并将其应用于TextView
:
问题是:
为什么文本有合适的颜色、大小、marginLeft 但不是粗体?
android - 动态创建 Android 样式
我很难找到有关是否可以Style
从头开始创建自定义的任何信息,该自定义在resources
创建给定构建时未定义。
我的目标是在任何给定时间根据外部输入更改应用程序的外观。你能帮我解决这个问题吗?
示例:我想编辑这些值
android - 获取浮点类型值属性的字符串类型不允许(在“paintStroke”处,值为“4f”)错误
我在我的 android 应用程序中为我的自定义视图使用自定义属性。我想为我的自定义属性提供一个浮点值。
资源/值/attrs.xml
资源/布局/view.xml
但是当我尝试运行应用程序时,它给了我以下错误
错误:(15, 34) 不允许使用字符串类型(在“paintStroke”处,值为“4f”)。
工作片段:
我们只需为自定义浮点属性值提供“4”或“4.0”。无需在结尾添加“f”。