ImageButton 使用@android:drawable/ 以编程方式设置可绘制

ImageButton set drawable using @android:drawable/ programmatically

我的 XML 布局中有以下图像按钮

<ImageButton
    android:id="@+id/show_only_checked"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="0"
    android:src="@android:drawable/arrow_down_float"
    tools:src="@android:drawable/arrow_down_float" />

太棒了。工作完美。但我想在 onClick() 事件中将其切换为代码中此可绘制对象的升级版本。每次用户单击按钮时,我都想在上下箭头之间来回切换。我似乎太笨了,无法弄清楚这一点。我试过下面的代码,没有运气。

if (ShowOnlyChecked) {
    view.setBackground(Drawable.createFromPath("@android:drawable/arrow_up_float"));
} else {
    view.setBackground(Drawable.createFromPath("@android:drawable/arrow_down_float"));
}

如有任何帮助,我们将不胜感激。

我的部分问题是如何将 "android.R..." 引用到可绘制对象。另一个是调用哪个方法。

尝试:

 imageButton.setBackgroundResource(android.R.drawable.arrow_up_float);

您的代码将更改视图的背景图像。

按钮图片的设置方法如下:

((ImageButton) view).setImageResource(R.drawable.arrow_down_float);

当您使用 ImageButton 组件时,您在运行时设置错误,因为 Drawable.createFromPath 提供了可绘制对象的路径,例如绝对路径或所需路径。 如果要设置箭头,则尝试根据资源文件夹添加不同分辨率的箭头图像 要么 youId.setBackgroundResource(android:R.drawable.id) 或从这里获取图片

https://material.io/resources/icons/?style=baseline