Android Studio中如何获取ImageButton的tint颜色值并存入SQLite
你可直接在点击事件中通过以下步骤实现需求:
- 获取ImageButton对应的
ColorStateList实例(android:tint属性对应的存储对象) - 取出目标状态的颜色int值
- 格式化为十六进制字符串后存入SQLite即可
Kotlin 示例代码
// 绑定控件 val imgBtn20 = findViewById<ImageButton>(R.id.imgBtn20) imgBtn20.setOnClickListener { // 获取tint对应的ColorStateList val tintList = it.imageTintList ?: return@setOnClickListener // 取默认状态下的颜色值,如果你需要取当前交互状态的颜色,可替换为: // val tintColor = tintList.getColorForState(it.drawableState, tintList.defaultColor) val tintColor = tintList.defaultColor // 转十六进制:不需要alpha通道输出6位格式(如#FFFFFF) val hexColor = String.format("#%06X", 0xFFFFFF and tintColor) // 若需要保留alpha通道输出8位格式(如#FFFFFFFF),使用以下代码 // val hexColor = String.format("#%08X", tintColor) // 此处添加将hexColor存入SQLite的逻辑即可 }
Java 示例代码
// 绑定控件 ImageButton imgBtn20 = findViewById(R.id.imgBtn20); imgBtn20.setOnClickListener(v -> { ImageButton btn = (ImageButton) v; // 获取tint对应的ColorStateList ColorStateList tintList = btn.getImageTintList(); if (tintList == null) { return; } // 取默认状态下的颜色值,需要取当前交互状态颜色可替换为: // int tintColor = tintList.getColorForState(btn.getDrawableState(), tintList.getDefaultColor()); int tintColor = tintList.getDefaultColor(); // 转十六进制:不需要alpha通道输出6位格式 String hexColor = String.format("#%06X", 0xFFFFFF & tintColor); // 若需要保留alpha通道输出8位格式,使用以下代码 // String hexColor = String.format("#%08X", tintColor); // 此处添加将hexColor存入SQLite的逻辑即可 });
注意事项
如果你需要获取的是android:backgroundTint属性的值,将代码中的imageTintList(Kotlin)/getImageTintList()(Java)替换为backgroundTintList/getBackgroundTintList()即可。
内容的提问来源于stack exchange,提问作者amir hossein kazemi
相关产品推荐
相关产品推荐

