2

私は2つの画像のいずれかを持つことができるImageViewを持っています(たとえば、画像1と画像2、ドローアブルに保存されます)。ImageView に image1 が含まれている場合、その ImageView をクリックして無効にする必要があります。画像 2 が表示されている場合、クリックすると画像が image1 に変更され、ImageView でクリックが無効になります。
ImageView に現在どの画像が表示されているかを知る方法が見つかりません。

これは私のコードです

ImageView select = (ImageView) view.findViewById(R.id.select); 
select.setOnClickListener(new OnClickListener() { 
public void onClick(View v) { 
// TODO Auto-generated method stub 
} 
});
4

7 に答える 7

2

それに対する最もクリーンなアプローチは、UI とは別にこの状態を追跡し、関心のある状態を UI に反映させることだと思います。適切なセッター メソッドを持つブール値で、そのメソッドに UI を更新させます。これはStateListDrawableにも適しているかもしれません。

于 2012-10-22T13:47:34.713 に答える
1

これはボタン用です:

final Button whichLane = (Button) reportDialog.findViewById(R.id.which_side_icon);
        // if button is clicked, close the custom dialog
        whichLane.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (whichLane.getBackground().getConstantState().equals(getResources().getDrawable(R.drawable.other_side).getConstantState()) ) {
                    Toast.makeText(HomeActivity.this, "text", 10).show();
                }
            }
        });
于 2013-07-10T14:13:42.737 に答える
0

この select.setId(imageArray[i])のように id を imageviews に設定します。ref については、このリンク を参照して、その中で必要な onclick アクションを実行してください。

public static int[] imageArray = {
         R.drawable.image1,
         R.drawable.image2

         };
Bitmap bmp= BitmapFactory.decodeResource(getResources(),imageArray[i]);
    select.setImageBitmap(bmp);
    select.setId(imageArray[i]);
    select.setOnClickListener(new OnClickListener() {
     @Override
    public void onClick(View v) {
         if(v.getId()==R.drawable.image1){
                   //here you set image2 to select 
             } 
         else{
                  //here you set image1 to select
         }
    } } );
于 2014-06-23T05:12:52.860 に答える
0

CompoundButtonを拡張する独自の View を作成することを検討してください。チェックされた状態はイメージであり、チェックされていない状態は他の状態です。

于 2012-10-22T14:02:36.290 に答える