0

ImageViewをクリックすると、レイアウトの背景を変更したいのですが、これを行うにはどうすればいいですか?

<?xml version="1.0" encoding="utf-8"?>

    <selector 
        xmlns:android="http://schemas.android.com/apk/res/android">
            <item 
                    android:drawable="@drawable/blue_bar" 
                    android:state_pressed="true"/> 
            <item 
                    android:drawable="@drawable/gray_bg"/>
    </selector>

XMLは

 <ImageView
            android:id="@+id/bookButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:onClick="reviewItineary"
            android:src="@drawable/book" />
4

5 に答える 5

0
    lLayout = (RelativeLayout) findViewById(R.layout.main);//Your layout instance

    bookButton=(ImageView)findViewById(R.id.bookButton);
bookButton.setOnClickListener(this);


    public void onClick(View v) {

            if(v==bookButton){

    lLayout.setBackgroundColor(Color.parseColor("#000000"));//to change the color
    lLayout.setBackgroundDrawable(drwableItem);//drawable object
    lLayout.setBackgroundResource(R.id.bckResource);//resource
                }
    }
于 2013-08-26T10:26:09.823 に答える
0

次のように、イメージビュー自体にカラーフィルターを設定せずに、イメージビューの背景を変更できます。

    button = (ImageView) findViewById(R.id.back);
    button.setOnTouchListener(new View.OnTouchListener() {
    private Rect rect;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
           button.setBackgroundColor(Color.WHITE);
            rect = new Rect(v.getLeft(), v.getTop(), v.getRight(),  v.getBottom());
    }
    if (event.getAction() == MotionEvent.ACTION_UP) {
        button.setBackgroundColor(Color.argb(0, 0, 0, 0));
    }
    if (event.getAction() == MotionEvent.ACTION_MOVE) {
         if (!rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY())) {
                        backButton.setBackgroundColor(Color.argb(0, 0, 0, 0));
                    }
                }
                return false;
            }
        });
于 2016-04-06T11:17:04.727 に答える
0

このようなセレクターを作成します

image_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/blue_bar" android:state_focused="true"/>
    <item android:drawable="@drawable/blue_bar" android:state_pressed="true"/>
    <item android:drawable="@drawable/blue_bar" android:state_selected="true"/>
    <item android:drawable="@drawable/gray_bg" />

<ImageView
            android:id="@+id/bookButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:onClick="reviewItineary"
            android:background="@drawable/image_selector.xml"
            android:src="@drawable/book" />
于 2013-08-26T10:31:21.177 に答える
-1

プログラム的には、以下に示すように実行できます。

bookButton=(ImageView)findViewById(R.id.bookButton);

    public void setActivityBackgroundColor(int color) {
        View view = this.getWindow().getDecorView();
        view.setBackgroundColor(color);
    }

        bookButton.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub

                setActivityBackgroundColor(Color.GRAY);
                return false;
            }
        });

このコードは私にとって完璧に機能しています。

于 2013-08-26T10:31:39.137 に答える