【发布时间】:2020-04-15 14:36:07
【问题描述】:
我正在尝试将按钮背景与资源文件进行比较。 例如,我有按钮
按钮
<Button
android:id="@+id/btnGenre"
android:layout_width="110dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:background="@drawable/frame_genre"
android:text="POST"
android:padding="16dp"
android:focusable="true"
android:clickable="true"/>
背景有drawable/frame_genre。我正在尝试将此背景与 Resouce 文件进行比较。
例如
Drawable btnBackground = holder.btnGenre.getBackground();
if(btnBackground.getConstantState() == (getResources().getDrawable(R.drawable.frame_genre).getConstantState())){
Toast.makeText(context, "WORKED", Toast.LENGTH_SHORT).show();
}
这个if 语句检查按钮的背景。如果它是frame_genre,那么它应该继续阻塞。
在我的例子中,背景按钮是frame_genre,if 语句应该是 TRUE。
但是由于某种原因,当我记录按钮背景Log.d(TAG, btnBackground.getConstantState().toString()); 和frame_genre Log.d(TAG,getResources().getDrawable(R.drawable.frame_genre).getConstantState())
它打印两个不同的内存位置。
我不明白为什么,毕竟我指向的是同一个文件,即frame_genre。
谁能给我解释一下有什么不同?
我正在寻找一种方法来检查按钮,因为我想在单击后更改其背景。
【问题讨论】:
-
为什么不使用选择器来进行点击和非点击状态?
-
从未听说过。你能指导我去哪里找吗?
标签: android android-layout android-components