问题标签 [statelistdrawable]

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 投票
2 回答
1866 浏览

android - 为什么当我触摸 ImageView 时,应用于 ImageView 的 state-list-drawable 不使用 drawable 进行按下状态?

ImageView在 XML 中定义如下:

button_state_list_drawable.xml

button_pressed_state_drawable.xml

button_enabled_state_drawable.xml

问题是,当我单击/触摸 时ImageViewbutton_pressed_state_drawable似乎没有使用,即我看不到实际<solid android:color="#1aafd0" />操作(这基本上是两个可绘制对象之间的唯一区别),即背景颜色仍然是透明的而不是变为蓝色。我在哪里搞砸了?

0 投票
2 回答
673 浏览

android - 当我将多个状态添加到在状态列表drawable中,它停止工作。为什么?

我想要的是:

具有透明背景的 ImageView。当它被点击时,它的背景应该变成蓝色,并且在点击其他东西之前应该保持蓝色。我正在为它使用可绘制的状态列表。

怎么了:

代码如下。问题是背景确实变成了蓝色,但它并没有保持蓝色。所以我认为这是因为它只代表了小部件点击android:state_pressed的那一刻。所以我也添加到了之后。然后发生的事情是即使单击图像视图,背景也会停止变android:state_selected="true"button_state_list_drawable.xmlandroid:state_pressed="true"

我该如何解决?

ImageView在 XML 中定义如下:

button_state_list_drawable.xml

button_pressed_state_drawable.xml

button_enabled_state_drawable.xml

0 投票
1 回答
38 浏览

android - 视图在被点击后(即点击被释放后)处于什么状态?

我有一个ImageView带有背景颜色的可点击对象,我想要的是当它被触摸/点击时它的背景颜色会发生变化,即使在点击被释放后它也应该保持变化,直到点击其他东西。为此,我正在编写一个state-list drawable

我正在使用pressed状态,即单击视图时的状态。我还想知道ImageView点击被释放后的状态是什么(直到点击了其他东西)。

我说的是这里给出的以下状态:

  • state_pressed
  • state_focused
  • state_hovered
  • state_selected
  • state_checkable
  • state_checked
  • state_enabled
  • 状态激活
  • state_window_focused
0 投票
0 回答
287 浏览

android - 来自 API 级别 21 以下的 svg-s 的 Android StateListDrawable

我还想在 API 级别 21 之前使用可缩放矢量图形重构我的应用程序(因为支持库 23.2 是可能的,这是一个很酷的工作人员),而不是生成 png-s。我唯一的问题是,我不能让它与 StateListDrawables 一起工作。在重构之前,我使用过 StateListDrawables,例如:

其中“ dashboard_reset_max_alt*”是 svg-s。

但是,如果我vectorDrawables.useSupportLibrary = true在 build.gradle 中设置了“”,我既不能在app:srcCompat属性中也不能在getDrawable()方法中使用它们。你知道使用我已经拥有的 xml 文件和 svg-s 的解决方案吗?

崩溃日志:

getDrawable 方法如下所示:

我知道我可以以编程方式创建 StateListDrawables,但我更喜欢一种解决方法,这样我就可以使用我已经拥有的 xml-s。你有什么想法?

0 投票
1 回答
687 浏览

android - 为什么列表和状态列表选择器波纹动画不能完全绘制在 API24 上?

在这种情况下,问题与 RecyclerView 相关,我希望涟漪效应从手指触摸自定义颜色的位置到视图的全部范围进行动画处理(大致如果不完全),就像列表视图中的行一样根据视图的布局,最后以另一种颜色选择的行结束其动画。

我有

items_row.xml

items_ripple_state_selector.xml

结果不好的测试

我已经在以下设备上进行了测试,其中涟漪效果动画过早停止,导致更多的是“blip”/“ping”而不是视图边缘的完全扩展。

  • Nexus 6、牛轧糖 (7.0.0)、API 24
  • Nexus 5X,Nougat (7.xx),次要版本不是 100%
  • 不同的 AVD 针对 API 级别 24

结果很好的测试

我已经在以下设备上进行了测试,其中涟漪效果动画以我期望的全长动画精美地呈现到视图的边缘:

  • Nexus 5,棉花糖 (6.0.1),API 级别 23
  • Nexus 4,棒棒糖 (5.1.1),API 级别 22

我一生都无法弄清楚这是怎么回事。当动画中途停止时,在 N6 和 N5X 上看起来非常可怕,动画何时停止没有明显的模式。

我已经阅读了很多 SO 问题以及 RecyclerView、StateListDrawable 和 RippleDrawable 文档,但没有任何内容可以解释我看到的行为。

我最接近的,这是我目前正在使用的,以及我在这篇文章中分享的代码,来自这个答案https://stackoverflow.com/a/31335539/975641

有谁知道为什么会发生这种情况以及如何解决它?

0 投票
0 回答
343 浏览

android - 在动作模式下,gridview 中的多个选择元素

当我处于操作模式时,如何在网格视图中选择多个元素?

我已经实现了这种方式,但没有功能:

片段布局:

状态列表选择器 (selected.xml)

适配器(创建动态视图,如自定义 imageview()

imageview 可检查状态的子类

动作模式监听器 (CAB)

我可以在动作模式下完成,但多选不起作用(自定义图像视图没有改变 bgcolor)为什么?我哪里错了?

0 投票
0 回答
504 浏览

android - 协调父母和孩子之间的可绘制状态

我有一个自定义视图LockButton,它只是一个包含两个特定子视图的 FrameLayout。它拥有一个ImageButton以及一种自定义视图ProgressIndicator。这个问题围绕着 LockButton 和 ImageButton 的行为。特别是我为 LockButton 添加了一个自定义状态。ImageButton 的源有一个 StateListDrawable,它的背景有一个 ColorStateList。

问题是当我更改 LockButton 中的状态时,该更改未显示在 ImageButton 中

状态变化

我究竟做错了什么?

锁定按钮类:

锁定按钮布局:

属性 XML:

可绘制的 icon_lock_status.xml:

可绘制的 button_lock_background.xml:

颜色 button_lock_color.xml:

当我需要更改状态时,我只需调用

在锁定按钮上


我还测试了使用默认状态而不是我的自定义状态是否会更好。这没有帮助。ImageButton 仍然不响应默认状态的变化。

将 StateListDrawable 设置为 LockButton (FrameLayout) 的背景确实有效。所以状态变化在父母身上正常工作,只是没有反映在孩子身上。

0 投票
1 回答
246 浏览

android - android statelistdrawable 导致按钮缩小然后恢复到原始大小

我正在尝试使用我的 xml 文件向按钮添加可绘制对象,以便它产生反弹效果。它的静止状态大小应该是 1x1。当你点击它时,它应该从 1 变为 0.75,然后从 0.75 回到 1,这样它看起来就像一个弹跳。

我希望默认状态基本上什么都没有(其他代码会导致默认状态被触发,并且当我不希望它发生时会发生反弹)。

所以,我需要3个状态。1 表示按下,1 表示返回默认值,1 表示默认值。

是否有任何其他状态可以使用,以便按钮变小,然后再次变大,看起来像弹跳而不使用默认值?

代码

0 投票
1 回答
96 浏览

android-dialogfragment - 编程 statelistdrawable 在对话框片段中不起作用

我有一个自定义按钮,按下倒计时状态会改变。我想在状态下添加背景。这是我的Java代码:

但是背景总是bg_disable,按钮在android DialogFragment中。我不知道为什么启用状态不起作用。

0 投票
0 回答
716 浏览

android - 如何检查两个 StateListDrawable(s) 是否相等?

我正在尝试编写一个测试来检查我的 ViewGroup 是否具有正确的背景。我正在使用 Espresso 和 Hamcrest 进行测试。

这是我用于 ViewGroup(RelativeLayout) 背景的 xml 文件。

尝试 1

我遵循了来自programcreek.com代码,并且在和. 由于示例中未涵盖,因此我尝试添加一些代码,希望它能起作用。GradientDrawablegetCurrentexpectedDrawableactualDrawableGradientDrawable

这是我得到的错误。

java.lang.IllegalArgumentException:宽度和高度必须 > 0

因此,我记录了 的值gradientDrawable.getIntrinsicWidth()以查看发生了什么,发现它是-1.

尝试 2

然后,我尝试将那些StateListDrawable(s)直接更改为Bitmap(s)。我得到与尝试 1 相同的错误。

尝试 3

如果我只是在equalsor==上使用StateListDrawableor GradientDrawable,则来自同一 xml 文件的可绘制对象不匹配。

android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'with drawable' 与所选视图不匹配。