Java 按下按钮时如何更改图像视图的图标?

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

在我的Android项目中有3个
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图标)
案例中
。问题解决了。谢谢你的帮助。很高兴知道我的回答对你有帮助。