单击后更改图像的自定义按钮

时间:2014-06-14 19:24:07

标签: android button onclicklistener

我是android app开发的初学者,我的页面中有几个按钮,我想通过点击更改图像。但是,尽管我按照顺序标记了按钮并使用了id来创建oncreate方法中的按钮,但是当我测试时它并没有改变图像以获得正确的按钮。例如,如果编写代码以触发第二个按钮,则会触发第5个按钮。我希望我的问题是可以理解的。代码如下。

    public class StartGameActivity extends Activity implements View.OnClickListener{

    Button one, two, three, four, five, six, seven, eight, nine;
    int counter, onOff;


    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.game_start);

        one = (Button) findViewById(R.id.empty_button);
        two = (Button) findViewById(R.id.empty_button2);
        three = (Button) findViewById(R.id.empty_button3);
        four = (Button) findViewById(R.id.empty_button4);
        five = (Button) findViewById(R.id.empty_button5);
        six = (Button) findViewById(R.id.empty_button6);
        seven = (Button) findViewById(R.id.empty_button7);
        eight = (Button) findViewById(R.id.empty_button8);
        nine = (Button) findViewById(R.id.empty_button9);


        one.setOnClickListener(this);
        two.setOnClickListener(this);
        three.setOnClickListener(this);
        four.setOnClickListener(this);
        five.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        if(v == one){

            v.setPressed(true);
        v.setBackgroundResource(R.drawable.circle);
                    }
                    else if(v == two){

        v.setPressed(true);
        v.setBackgroundResource(R.drawable.circle);
                    }

这是xml

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView 
    android:contentDescription="@string/game_board"
    android:src="@drawable/gameboard2"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="fitXY"/>

<Button
android:id="@+id/empty_button"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_alignBaseline="@+id/empty_button3"
android:layout_alignBottom="@+id/empty_button3"
android:layout_alignLeft="@+id/empty_button4"
android:background="@drawable/customemptybutton" />


<Button
android:id="@+id/empty_button2"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_above="@+id/empty_button5"
android:layout_alignLeft="@+id/empty_button5"
android:background="@drawable/customemptybutton2"
android:gravity="center" />
直到最后,它几乎同样如此

1 个答案:

答案 0 :(得分:0)

请阅读您的评论。

请发布你的xml,你确定Java假定的id与XML匹配吗?此外,您不需要在onClick()中设置setPressed()。由于所有按钮都共享同一个监听器,因此我发现以下做法更好,而不是保留对所有按钮的引用。

public void onClick(View v) { 

switch (v.getId()) {
    case R.id.button1:
        // application logic
    case R.id.button2:
        //application logic
}

}