我正在尝试将按钮背景与资源文件进行比较。例如,我有按钮
按钮
<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
. 谁能向我解释有什么不同?
而且我正在寻找一种检查按钮的方法,因为我想在单击后更改其背景。