单击时,Android java按钮图像会发生变化

时间:2015-08-08 20:16:46

标签: java android

我似乎无法让我的代码工作。我一直收到错误。

我使用此代码

创建了一个selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/loginbuttondn" />
    <item android:state_selected="false"
        android:drawable="@drawable/loginbutton" />
</selector>

继承我的实际代码

package monaiz.net.periscope.periscope;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.MotionEvent;
import android.view.View.OnTouchListener;



public class MainActivity extends AppCompatActivity implements OnTouchListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }
    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        switch (action) {
            v.setOnTouchListener(new OnTouchListener() {
                @Override
                public boolean onTouch(View arg0, MotionEvent arg1) {

                    v.setSelected(arg1.getAction()==MotionEvent.ACTION_DOWN);
                    return true;
                }
            });

        }
        return true;
    }


    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

我试图得到它,以便当我点击按钮时,它有一个显示另一个图像的点击效果

我在这里收到错误:

我仍然在这一行v.setSelected(arg1.getAction()==MotionEvent.ACTION_DOWN);

上收到错误

在“v。”

我按钮的代码

 <ImageView
        android:layout_width="280dp"
        android:layout_height="90dp"
        android:layout_marginTop="830px"
        android:layout_marginLeft="55dp"
        android:src="@drawable/loginbutton"/>

2 个答案:

答案 0 :(得分:0)

使用state_pressed

抽拉/ selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:drawable="@drawable/loginbuttondn" />
    <item
        android:drawable="@drawable/loginbutton" />
</selector>
<Button
    android:layout_width="280dp"
    android:layout_height="90dp"
    android:background="@drawable/selector"/>

答案 1 :(得分:0)

您的选择器需要如下所示:

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

调用此login_button_selector.xml并将其放入/ res / drawable文件夹中 现在使用它:

<ImageView
        android:layout_width="280dp"
        android:layout_height="90dp"
        android:layout_marginTop="830px"
        android:layout_marginLeft="55dp"
        android:src="@drawable/login_button_selector"/>

当视图处于&#34;按下时#34; state,它将匹配选择器中的第一个项目。当它不在&#34;按下&#34;状态,它将匹配选择器中的第二个项目。