问题标签 [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.

0 投票
3 回答
1816 浏览

android - 在 android 中更改 AttributeSet 值

我有自定义视图,它将属性集(xml 值)作为构造函数值

在片段类中,我将视图设置为

其中自定义视图包含各种值,例如高度、宽度、填充等。

我想根据所需条件修改这些值并将其设置回自定义视图。我在onDraw方法中放置了设置宽度高度代码并调用了无效视图。但是如果我在 CustomView 类中调用invalidate方法,上述方法将设置每次。如何克服这个问题,以便我只能在构造函数中传递修改后的属性集值。?

编辑:我需要修改在属性构造函数期间设置的视图值(使用新值初始化),以便我将获得具有新值的刷新视图。覆盖@OnDraw 或'Invalidate' 对我来说不是一个好的功能,在invalidate 里面我已经编写了将在每一秒间隔内执行的方法。

0 投票
3 回答
3225 浏览

android - 将默认颜色设置为 Android 库

所以我有一个 Android,我希望其他人在使用它时能够轻松地自定义它的颜色。问题是颜色不仅仅是一个属性(如视图背景),它更像是一种主题颜色(视图背景、文本颜色、按钮的笔触等......)所以我不能只将它作为视图属性传递。所以我最终使用了 acolor reference并在样式、布局和可绘制对象中使用它:

颜色.xml:

布局.xml:

库项目中的styles.xml:

这很好用,当有人使用我的库时,他必须声明他希望你在他的主题中使用的颜色:

应用项目中的styles.xml:

问题是这样的:我想为这个库提供一个默认的配色方案。现在可以使用 2 个选项执行它:

  1. 使用默认颜色集声明我自己的主题,用户将需要从我的继承他的主题。
  2. 在我的 color.xml 中添加一些 default_color,以便用户能够将其用作主题中的颜色。

第一个真的很糟糕,因为我不能强迫用户使用特定的应用程序主题(如 AppCompact.Light)。第二个也不是很好,因为我希望用户能够无缝地使用默认设置,并且我在主题中有几种颜色需要他设置。

您认为有没有其他方法可以让其他用户轻松使用这些颜色?

谢谢。

0 投票
2 回答
997 浏览

android - 从主题中设置自定义 TextInputLayout 属性

在设计库源代码中,我们可以找到这一行:

我想通过errorTextAppearance属性改变错误文本的颜色

我知道如何通过 TextInputLayout xml 声明中的 app:{atribut-name} 对其进行自定义,但是如何从我的主题定义中自定义其中一个属性?

0 投票
0 回答
196 浏览

android - x 与 canvas.draw 坐标与自定义文本视图不起作用

我已经成功地创建了我的这个问题的答案(在 andorid 中左可绘制与文本对齐) ,但问题是 canvas.drawText x 坐标无法正常工作,因为 x 坐标不会影响文本的位置。

这是drawable上重叠文本的结果, 在此处输入图像描述

我只是想删除重叠并给出可绘制对象和画布上文本之间的距离。

这是我的代码如下,

}

这是attr,

0 投票
0 回答
259 浏览

android - 为什么自定义 android 视图不将 TypedArray 作为参数

我正在学习在 Android 中编写自定义视图,并阅读文档。

自定义视图被传递一个 AttributeSet 作为参数。但是文档说要使用以下代码获取 TypedArray

那么为什么它不只是传递一个 TypedArray 开始呢?你什么时候想检查 AttributeSet 呢?

该文档指定您不想检查原始 AttributeSet,因为...

- 属性值内的资源引用未解析

世界卫生大会??这是否意味着如果我在 xml 中有一个自定义属性 x=10,它在解决之前不会等于 10?

- 不应用样式

如果我在 xml x=10 中有一个自定义属性,那么应用样式实际上会做什么?

0 投票
2 回答
2618 浏览

android - TypedArray 的 getResourceId 方法

我正在阅读有关getResourceId()方法的文档。它说:

检索索引处属性的资源标识符。请注意,在检索整个 TypedArray 对象时,属性资源已解析。因此,此函数将返回找到的最终资源值的资源标识符,不一定是属性指定的原始资源。

所以

  • 第一段很清楚:

检索索引处属性的资源标识符。

  • 第二个也很清楚:

请注意,在检索整个 TypedArray 对象时,属性资源已解析。

  • 但是第3段是什么意思? 为什么它 不一定能返回原始资源ID

因此,此函数将返回找到的最终资源值的资源标识符,不一定是属性指定的原始资源。

0 投票
0 回答
685 浏览

android - Android Resources.getIdentifier 为自定义属性返回错误值

最近我正在做一个使用Resources.getIdentifier()很多的项目。一切都很有趣,但是当我尝试使用此方法检索自定义属性时会出现问题。

所以我在 xml 中声明了一些属性

然后我在xml中应用这个属性

在 FloatExpandMenuItem

ResourceUtils.getResId 是 Resources.getIdentifier 的包装器,如下所示

奇怪的事情发生了,我尝试在 FloatExpandMenuItem 中调试,ResourceUtils.getResId 在检索标签、图标、showDot 属性时总是返回 0。

所以我想知道在使用 Resources.getIdentifier() 时尝试处理自定义属性时应该如何更改代码?

0 投票
1 回答
590 浏览

android - 为什么通过自定义视图属性传递样式时文本不是粗体?

假设我有以下.xml风格:

我想通过属性将它传递给自定义视图:

在自定义视图中,我获取样式属性并将其应用于TextView

问题是:

为什么文本有合适的颜色、大小、marginLeft 但不是粗体?

0 投票
0 回答
267 浏览

android - 动态创建 Android 样式

我很难找到有关是否可以Style从头开始创建自定义的任何信息,该自定义在resources创建给定构建时未定义。

我的目标是在任何给定时间根据外部输入更改应用程序的外观。你能帮我解决这个问题吗?

示例:我想编辑这些值

0 投票
0 回答
203 浏览

android - 获取浮点类型值属性的字符串类型不允许(在“paintStroke”处,值为“4f”)错误

我在我的 android 应用程序中为我的自定义视图使用自定义属性。我想为我的自定义属性提供一个浮点值。

资源/值/attrs.xml

资源/布局/view.xml

但是当我尝试运行应用程序时,它给了我以下错误

错误:(15, 34) 不允许使用字符串类型(在“paintStroke”处,值为“4f”)。

工作片段

我们只需为自定义浮点属性值提供“4”或“4.0”。无需在结尾添加“f”。