我有一个带有大量图像按钮的滚动视图.我想在按下时更改图像按钮的图像.问题是我希望图像保持不变,直到按下另一个图像按钮.这就是我无法使用选择器的原因.实现他的最佳实践是什么?
最好的祝福
Pra*_*ara 33
你想这样做.
ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage);
// when you click this demo button
Demo_button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Demo_button.setImageResource(R.drawable.secondimage);
}
}
Run Code Online (Sandbox Code Playgroud)
试试这个.(更新的setset设置)
M. *_*han 23
更好的解决方案,使用以下xml作为图像的来源:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_activated="true">
<bitmap android:src="@drawable/image_selected"/>
</item>
<item>
<bitmap android:src="@drawable/image_not_selected"/>
</item>
</selector>
@Override
public void onClick(View v) {
v.setActivated(!v.isActivated());
}
Run Code Online (Sandbox Code Playgroud)
jak*_*b.g 14
将以下内容保存为drawable/image_pressable.xml两个图像旁边:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/image_regular" />
</selector>
Run Code Online (Sandbox Code Playgroud)
然后将其引用为:
<ImageView android:src="@drawable/image_pressable" />
Run Code Online (Sandbox Code Playgroud)
小费:
使用state_pressed而不是state_activated允许在用手指按压图像时更改图像.state_activated如果你想动态改变ImageView的状态,可能会很有用,但是如果你只是希望它在按下时表现不同,则不需要任何代码.这正是本主题提出的问题.
小智 5
OnTouchListener对于你必须做的事情要好得多:
myImageButton.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN :
myImageButton.setImageResource(R.drawable.image_when_pressed);
break;
case MotionEvent.ACTION_UP :
myImageButton.setImageResource(R.drawable.image_when_released);
break;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
不要忘记创造"有趣"的领域
尝试此操作来更改图像.按下imageview时
Like_btn.setOnClickListener(new OnClickListener()
{
**private boolean fun = true;**
public void onClick(View v)
{
if(fun)
{
Like_btn.setImageResource(R.drawable.unlike);
fun=false;
}
else
{
fun=true;
Like_btn.setImageResource(R.drawable.like);
Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
尝试下面的代码:-
boolean flag=false;
ImageButton btn = (ImageButton)findViewById(R.id.btn);
// when you click this demo button
btn .setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!flag) {
btn.setBackgroundResource(R.drawable.imageonpress);
flag=true;
}
else {
btn.setBackgroundResource(R.drawable.image);
flag=false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72948 次 |
| 最近记录: |