【发布时间】:2017-07-13 08:04:30
【问题描述】:
我的活动中有ImageView,具有以下属性在 Imageview 上第二次起作用了
<ImageView
android:clickable="true"
android:focusable="false"
android:id="@+id/switchIcon"
android:layout_width="50dp"
android:layout_height="45dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/title"
android:layout_weight="0.1"
android:scaleType="fitXY"
android:src="@drawable/ic_play_circle_filled_black_24dp" />
我的活动类文件中有以下代码:
ImageView switchIcon;
switchIcon = (ImageView) findViewById(R.id.switchIcon);
switchIcon.setOnClickListener(new View.OnClickListener() {
@Override
public boolean onClick(View v) {
if (switchStatus.equals("video")) {
switchStatus = "image";
LayoutImage.setVisibility(View.VISIBLE);
LayoutVideo.setVisibility(View.GONE);
mPlayer.pause();
Glide.with(getApplicationContext()).load(R.drawable.ic_play_circle_filled_black_24dp).into(switchIcon);
} else if (switchStatus.equals("image")) {
if (requestData.get("video_link").equals("")) {
Toast.makeText(getApplicationContext(), "No Video Found for this Recipe", Toast.LENGTH_LONG).show();
} else {
switchStatus = "video";
LayoutImage.setVisibility(View.GONE);
LayoutVideo.setVisibility(View.VISIBLE);
mPlayer.play();
Glide.with(getApplicationContext()).load(R.drawable.ic_photo_size_select_actual_black_24dp).into(switchIcon);
}
} else {
switchStatus = "image";
LayoutImage.setVisibility(View.VISIBLE);
LayoutVideo.setVisibility(View.GONE);
mPlayer.pause();
Glide.with(getApplicationContext()).load(R.drawable.ic_play_circle_filled_black_24dp).into(switchIcon);
}
}
});
我还尝试添加OnTouchListener(),因为OnClickListener() 无法使用此功能,但OnTouchListener() 也无法使用 ImageView 它还需要单击两次才能获得 onclick 事件
switchIcon.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
if (switchStatus.equals("video")) {
switchStatus = "image";
LayoutImage.setVisibility(View.VISIBLE);
LayoutVideo.setVisibility(View.GONE);
mPlayer.pause();
Glide.with(getApplicationContext()).load(R.drawable.ic_play_circle_filled_black_24dp).into(switchIcon);
} else if (switchStatus.equals("image")) {
if (requestData.get("video_link").equals("")) {
Toast.makeText(getApplicationContext(), "No Video Found for this Recipe", Toast.LENGTH_LONG).show();
} else {
switchStatus = "video";
LayoutImage.setVisibility(View.GONE);
LayoutVideo.setVisibility(View.VISIBLE);
mPlayer.play();
Glide.with(getApplicationContext()).load(R.drawable.ic_photo_size_select_actual_black_24dp).into(switchIcon);
}
} else {
switchStatus = "image";
LayoutImage.setVisibility(View.VISIBLE);
LayoutVideo.setVisibility(View.GONE);
mPlayer.pause();
Glide.with(getApplicationContext()).load(R.drawable.ic_play_circle_filled_black_24dp).into(switchIcon);
}
return true;
}
return false;
}
});
我也尝试将ImageView 更改为ImageButton,但这也无济于事,请告诉我我可以采取什么措施来解决这个问题。
【问题讨论】:
-
switchStatus的默认值是什么
-
switchStatus="" 的默认值为空白
-
android:focusable="false",为什么是这一行?
-
我刚刚添加了该行以检查焦点是否有问题,因为第一次点击它获得焦点,第二次点击 Onclick 事件发生
标签: android onclick imageview listener