Java 按下按钮时如何更改图像视图的图标?
在我的Android项目中有3个Java 按下按钮时如何更改图像视图的图标?,java,android,android-imageview,Java,Android,Android Imageview,在我的Android项目中有3个imageview。单击按钮时,应将其更改为图标。当释放单击时,它应该是默认图标。在“我的代码”中,单击按钮时会更改图标,但它会永久更改图标,直到从此活动中单击“后退”按钮。单击按钮时,它只能将mainpage\u acil\u图标\u p替换为mainpage\u acil\u图标 我怎样才能解决这个问题 activity_mainpage.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa
imageview
。单击按钮时,应将其更改为图标。当释放单击时,它应该是默认图标。在“我的代码”中,单击按钮时会更改图标,但它会永久更改图标,直到从此活动中单击“后退”按钮。单击按钮时,它只能将mainpage\u acil\u图标\u p
替换为mainpage\u acil\u图标
我怎样才能解决这个问题
activity_mainpage.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/Linear_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp"
android:alpha=".85"
android:background="@drawable/mainpage_background"
android:orientation="vertical"
android:weightSum="60">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="40"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="EMAS"
android:textAlignment="center"
android:textColor="@color/colorWhite"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="20"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#c7c7c8"/>
<include layout="@layout/mainpage_inner_part" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
MainPageActivity.java
public class MainPageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mainpage);
ListView list;
final String[] web = {
getString(R.string.mainpage_acil),
getString(R.string.mainpage_bildirim),
getString(R.string.mainpage_isguveligi),
};
Integer[] imageId = {
R.drawable.mainpage_acil_icon_p,
R.drawable.mainpage_bildirim_icon_p,
R.drawable.mainpage_isguvenligi_icon_p,
};
CustomListMainPage adapter = new
CustomListMainPage(MainPageActivity.this, web, imageId);
list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.v("Pozisyon", String.valueOf(position));
Intent intentPos;
ImageView imageView= (ImageView) view.findViewById(R.id.img);
boolean flag=false;
switch (position) {
case 0 :
//Toast.makeText(MainPageActivity.this, "You Clicked at " + web[+position], Toast.LENGTH_SHORT).show();
imageView.setImageResource(R.drawable.mainpage_acil_icon);
intentPos=new Intent(MainPageActivity.this,EmergencyActivity.class);
startActivity(intentPos);
break;
case 1 :
imageView.setImageResource(R.drawable.mainpage_bildirim_icon);
intentPos=new Intent(MainPageActivity.this,NotificationPage.class);
startActivity(intentPos); break;
case 2 :
imageView.setImageResource(R.drawable.mainpage_isguvenligi_icon);
intentPos=new Intent(MainPageActivity.this,JobSecurityActivity.class);
startActivity(intentPos);
break;
default :
System.out.println("Hatali secim! 1, 2 ya da 3'e basiniz.");
break;
}
}
});
}
}
public类MainPageActivity扩展了AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_主页);
列表视图列表;
最终字符串[]web={
getString(R.string.mainpage_acil),
getString(R.string.mainpage_bildirim),
getString(R.string.mainpage_isguveligi),
};
整数[]图像ID={
R.drawable.mainpage\u acil\u图标,
R.drawable.mainpage\u bildirim\u icon\u p,
R.drawable.mainpage_isguvenligi_icon_p,
};
CustomListMainPage适配器=新建
CustomListMainPage(MainPageActivity.this、web、imageId);
list=(ListView)findViewById(R.id.list);
list.setAdapter(适配器);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Log.v(“Pozisyon”,String.valueOf(position));
意向意向书;
ImageView=(ImageView)view.findViewById(R.id.img);
布尔标志=假;
开关(位置){
案例0:
//Toast.makeText(MainPageActivity.this),您在“+web[+position],Toast.LENGTH\u SHORT.show]上单击了它();
imageView.setImageResource(R.drawable.mainpage\u acil\u图标);
intentPos=新意图(MainPageActivity.this,EmergencyActivity.class);
星触觉(intentPos);
打破
案例1:
imageView.setImageResource(R.drawable.mainpage\u bildirim\u图标);
intentPos=新意图(MainPageActivity.this,NotificationPage.class);
起始触觉(intentPos);中断;
案例2:
imageView.setImageResource(R.drawable.mainpage_isguvenligi_图标);
intentPos=新意图(MainPageActivity.this,JobSecurityActivity.class);
星触觉(intentPos);
打破
违约:
System.out.println(“Hatali secim!1,2 yada 3'e basiniz.”);
打破
}
}
});
}
}
我认为最简单的方法是使用选择器
在活动布局文件中,将ImageView替换为按钮,并将选择器设置为背景
在活动布局中:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:background="@drawable/btn_selector"
android:id="@+id/button"/>
这是btn_selector.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_pressed="true" android:drawable="@drawable/mainpage_acil_icon" />
<item android:state_pressed="true" android:drawable="@drawable/mainpage_acil_icon"/>
<item android:state_checked="true" android:drawable="@drawable/mainpage_acil_icon"/>
<item android:drawable="@drawable/mainpage_acil_icon_p"/>
</selector>
将此选择器文件放在res/drawable文件夹中。我想这会对您有所帮助。我只是想知道,当按钮被点击几分钟时,您想要更改图标,它应该会设置回默认图标。是的。仅限压榨。类似于活动情况。使用handler可以有一个快速解决方案。您需要的是selectorOk。非常感谢。这不是我写的代码。在我之前的开发人员编写了这些代码。所以,我想整合这些代码。我解决了这个问题。我为您编写的每个imageview(如btn_selector.xml
)生成xml。并使用R.drawable.btn\u选择器更改此代码R.drawable.mainpage\u acil\u icon\u p
。还可以删除imageView.setImageResource(R.drawable.mainpage\u acil\u图标)代码>在案例中
。问题解决了。谢谢你的帮助。很高兴知道我的回答对你有帮助。