问题标签 [compound-drawables]

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 投票
40 回答
155299 浏览

android - 处理 EditText 中可绘制对象的点击事件

EditText使用以下 XML 在小部件中添加了文本右侧的图像:

但我想清除EditText单击嵌入图像的时间。我怎样才能做到这一点?

0 投票
16 回答
109413 浏览

android - 如何缩小按钮上的可绘制对象?

如何使按钮上的可绘制对象更小?图标太大了,居然比按钮高。这是我正在使用的代码:

上面是它应该看起来的样子,下面是它现在看起来的样子。

上面是它应该看起来的样子,下面是它现在看起来的样子。

我试过了,但没有显示图像。:-(

0 投票
4 回答
115933 浏览

android - 如何使用复合可绘制对象而不是包含 ImageView 和 TextView 的 LinearLayout

针对我的代码运行新的 Lint 工具。它提出了很多好的建议,但我无法理解这一点。

这个标签和它的孩子可以被一个和一个复合drawable替换

问题:检查当前节点是否可以使用复合可绘制对象替换为 TextView。

包含 ImageView 和 TextView 的 LinearLayout 可以更有效地处理为复合可绘制对象

这是我的布局

有人可以提供一个具体的例子来说明在这种情况下如何使复合物可绘制吗?

0 投票
1 回答
2482 浏览

android - DrawableTop 不显示drawable

我正在尝试使用 drawableTop 在按钮中的文本上方显示图片。

我的图片来自 sdcard,不是可绘制的。

此外,按钮的大小可能会根据显示的按钮数量而变化。更多的按钮,更小的按钮,然后是更小的图像。

这是我创建按钮的方式:

这是 XML 文件按钮样式:

这是我创建drawableTop的方法:

文本显示在按钮中,但图像未出现。

错误在哪里?

任何帮助表示赞赏!

0 投票
2 回答
9148 浏览

android - 如何在xml中设置复合可绘制文本视图的高度和宽度?

我看不到任何标签来设置宽度

在这里我设置了 textview 的高度,如果我设置了宽度,它将无法正常工作。

如何在 xml 中设置它?可能吗?

0 投票
3 回答
17616 浏览

android - 使用复合可绘制对象在 TextView 中设置实际文本填充

我有ListView一个ArrayAdapter. 对于项目,我只使用一个TextView布局。我希望某些行设置复合可绘制对象。

问题:有没有办法为包含在其中的实际文本设置填充,TextView以便复合可绘制对象也不会得到填充?其他解决方案是锁定文本的宽度。我需要添加ImageViews到我的布局吗?

0 投票
1 回答
2083 浏览

android - CompoundButton Checkbox 在哪里/如何测量可绘制的复选框的宽度

为了在右侧创建一个复选框,我正在查看 Android 中的代码。但我对 android 在哪里测量复选框图标/drawable 的宽度感到困惑。

Checkbox扩展了CompoundButton类,并且仅覆盖 onPopulateAccessibilityEvent 方法。CompoundButton 类有更多代码(100 行),它扩展了Button类。按钮类几乎没有额外的代码并扩展了TextView类。TextView 类的代码量最大(10,000 行)。

这是源代码的链接

复选框 http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/widget/CheckBox.java/?v=source

CompoundButton Web - 语法高亮 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/widget/CompoundButton.java?av=f

原始(更快查看) http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/widget/CompoundButton.java/?v=source

TextView Web - 语法高亮 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/widget/TextView.java?av=f

原始(更快查看) http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/widget/TextView.java/?v=source

TextView 有一个称为复合可绘制对象的功能,您可以在其中将可绘制对象放置在文本的左侧、右侧、底部或顶部。所以我假设这是 CompoundButton 为左侧复合可绘制对象设置可绘制复选框的地方。但是在 CompoundButton 代码中我找不到这个。

但是,当我通过扩展 CompoundButton 创建自定义类并调用 getCompoundPaddingLeft() 时,它给出的宽度大约等于复选框的大小。但是,当您运行 getCompoundDrawables() 时,即使在 onDraw() 处,结果也是一个空数组。在 textView 中,保存所有维度数据的变量都是私有的,所以我不确定 CompoundButton 是如何设置这些值的。这是TextView中getCompoundPaddingLeft()的示例

这是 CompoundButton 中设置了可绘制复选框的代码,似乎无论如何都没有传递给 TextView 左侧现在有一个可绘制图像。

所以我的问题是CompoundButton 如何设置左侧复合可绘制对象的宽度?请注意,我对右侧的复选框不感兴趣,因为我已经有了一个。

经进一步检查

我通过扩展 textview 类创建了一个自定义 textview 类,并让我的自定义 CompoundButton 类扩展它,以尝试通过覆盖某些方法来确定复选框间距的创建位置。

为复选框创建空间的不是 CompoundLeft 而是 paddingLeft。当我覆盖 setPadding() 方法时,正在向它发送 paddingLeft。这就像您在复选框上放置一个没有填充的背景一样,不会绘制该复选框。

正在从 textView 构造函数代码中的默认样式中读取填充

a = theme.obtainStyledAttributes( attrs, com.android.internal.R.styleable.TextView, defStyle, 0);

由于我们无法访问正在使用的 com.android.internal.R.styleable 我不知道如何进一步检查。

0 投票
2 回答
5006 浏览

android - 如何在 TextView 中将文本与其复合可绘制对象对齐?

我不知道如何在 TextView 中设置文本及其复合可绘制对象(小于文本)的对齐方式。似乎默认对齐方式是中心,但我需要将它们对齐边缘。

PS:android:gravity如果复合绘图大于文本,则效果很好,但如果更小,则效果不佳。

0 投票
2 回答
6162 浏览

android - 如何将复合可绘制对象放在文本视图的左上角

我们可以为 textview 设置复合可绘制对象,如下使用drawableLeftsetCompundDrawables但使用它只能将可绘制对象放置在左/右/顶部/底部。但我只想将可绘制对象放在 Textview 的左上角和右上角。我怎样才能做到这一点 ?

0 投票
6 回答
1876 浏览

android - 具有拉伸复合可绘制对象的固定宽度 TextView

我正在尝试实现以下布局:固定宽度的 TextView 与其父级的左侧对齐,其中的文本与该 TextView 的右侧对齐(这就是为什么固定宽度,可以用其他方式完成吗?)和父级的其余部分填充有可绘制的(简单线)。像这样:截屏

这是一个 ListView 包含 2 种类型的行,行的布局非常简单 - 带有 TextView 和 ImageView 的 LinearLayout(如果需要,我可以稍后发布确切的代码)。而且我收到一个警告,它可以用具有复合可绘制对象的单个 TextView 替换。

我完全支持优化,所以我真的很努力地听从了这个建议。不幸的是,我无法得到相同的结果——该行要么被限制为 TextView 的宽度,要么文本与 ListItem 的右侧对齐,现在到固定位置。

我错过了什么吗?

编辑:显然这实际上是不可能的,因为还有一些其他的复杂性(drawable现在是一个level-list drawable,它并不总是一条线,有时它有一个我必须设置的非固定高度)我会离开它现在的样子 - 线性布局,包含一个 TextView 和一个 ImageView。