在图像视图上设置事件

时间:2015-12-25 19:01:27

标签: android

我创建了ImageView,我想对其采取两项措施:

首先:当我按下ImageView它的背景时,为此,我创建了Drawable Resource File名为imgpressed.xml并在ImageView布局中添加了属性android:background="imgpressed

第二:如果我点击它(Action UP),Toast应出现在屏幕上,为此,我在Java Code中创建了方法SetOnClickListener 但是注意到当我在imageView中添加属性android:clickable时,代码java中的OnClickListener不起作用,如果我在Java代码中删除了属性OnClickListener,那么......

这是我的代码:

imageView布局:



<ImageView
        android:clickable="true"
        android:background="@drawable/imgpressed"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/imageView"
        android:contentDescription="@string/pauseimgS"
        android:focusableInTouchMode="false"
        android:background="@drawable/pauseimg"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        />
&#13;
&#13;
&#13;

imgpressed.xml:

&#13;
&#13;
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <bitmap android:src="@drawable/pauseimg"/>
    </item>
    <item android:state_pressed="true">
        <bitmap android:src="@drawable/pauseimgclicked"/>
    </item>
</selector>
&#13;
&#13;
&#13;

代码Java Main Activity

    public class game extends AppCompatActivity {
    RelativeLayout Rel_main_game;
    View pauseButton;

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

        LayoutInflater myInflater = (LayoutInflater) getApplicationContext().getSystemService(getApplicationContext().LAYOUT_INFLATER_SERVICE);
        pauseButton = myInflater.inflate(R.layout.pause, null, false);

        Rel_main_game = (RelativeLayout) findViewById(R.id.relativeLayout);
        Rel_main_game.addView(pauseButton);

        pauseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(game.this,"Thank You", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

1 个答案:

答案 0 :(得分:0)

为什么你为ImageView使用了两个背景?!

您应该使用android:src="pauseimg"作为图片来源 和android:background="@drawable/imgpressed"用于更改背景

另外,为了使您的imageview可以点击,您可以使用android:onClick="onImageClick",然后使用您的活动:

public void onImageClick(View view) {
    Toast.makeText(game.this,"Thank You", Toast.LENGTH_SHORT).show();
}