gpt4 book ai didi

java - 按下时更改布局背景并恢复为原始状态

转载 作者:行者123 更新时间:2023-12-01 13:54:38 25 4
gpt4 key购买 nike

我试图在按下按钮时更改布局的背景颜色,但在释放时更改回原始可绘制的颜色。

以下代码更改了背景资源 onclick 按钮,该按钮更改了背景,但在释放时它仍保留在新的可绘制资源中:

btnOne = (Button) findViewById(R.id.btnIcon1);
btnOne.setOnClickListener(oneClick);
btnOne.setOnTouchListener(oneC);

View.OnClickListener oneClick = new View.OnClickListener() {
@SuppressLint("NewApi")
public void onClick(View v) {
editor.putString("AndroidInfo", "1");
editor.commit();
Intent myIntent = new Intent(getApplicationContext(), VersionDetail.class);
startActivityForResult(myIntent, 0);
overridePendingTransition(R.anim.right_slide_in, R.anim.right_slide_out);
}
};

View.OnTouchListener oneC = new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
rlOne.setBackgroundResource(R.drawable.dateborderclick);
return true; // if you want to handle the touch event
case MotionEvent.ACTION_UP:
rlOne.setBackgroundResource(R.drawable.dateborder);
return true; // if you want to handle the touch event
}
return false;
}
};

日期边框 xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="4dp"
android:topRightRadius="4dp"
android:bottomRightRadius="4dp"
android:bottomLeftRadius="4dp" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<solid android:color="#CCE5E5E5" />
</shape>

日期边框点击 xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="4dp"
android:topRightRadius="4dp"
android:bottomRightRadius="4dp"
android:bottomLeftRadius="4dp" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<solid android:color="#CCD1FFFE" />
</shape>

日期边框是默认背景。当用户与按钮交互时,我希望日期边框在按下时成为 dateborderclick,并在释放时返回到 dateborder。根据上面的代码,它应该可以工作,但现在按下可以工作,但点击不起作用。

最佳答案

你对自己的要求超出了应有的程度。 Android有一个State List Drawable它会为您解决这个问题。如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true"
android:dither="true"
android:variablePadding="false">
<item
android:state_selected="true"
android:state_enabled="true"
android:drawable="@drawable/tab_on" />
<item android:drawable="@android:color/transparent" />
</selector>

基本上,您定义处于各种状态的项目并为它们提供可绘制对象。如果您的默认状态是最后一项。如果您点击上面的链接,您将看到所有可以设置的不同标志,以将其调整为您想要的。定义此可绘制对象后,只需将其设置为按钮的背景即可。

关于java - 按下时更改布局背景并恢复为原始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19691697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com