我有一个想要实现onClickListener的ImageView.但是当我点击图像时,没有任何反应.事件Logcat没有显示任何错误.
以下是我的导入声明:
import android.view.View.OnClickListener;
Run Code Online (Sandbox Code Playgroud)
以下是我的图像布局代码:
<ImageView android:id="@+id/favorite_icon"
android:src="@drawable/small_star"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right" android:paddingTop="63sp"
android:paddingRight="2sp" />
Run Code Online (Sandbox Code Playgroud)
以下是我的活动中的代码,它定义了onClickListener的事件处理程序:
ImageView imgFavorite = (ImageView) findViewById(R.id.favorite_icon);
imgFavorite.setClickable(true);
imgFavorite.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i(SystemSettings.APP_TAG + " : " + HomeActivity.class.getName(), "Entered onClick method");
Toast.makeText(v.getContext(),
"The favorite list would appear on clicking this icon",
Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
我错过了什么.任何帮助,将不胜感激.
提前致谢.
Hou*_*ine 41
你可以尝试一下并告诉我会发生什么事吗?:
ImageView imgFavorite = (ImageView) findViewById(R.id.favorite_icon);
imgFavorite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(YourActivityName.this,
"The favorite list would appear on clicking this icon",
Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
或者你应该添加这个:
imgFavorite.setClickable(true);
Run Code Online (Sandbox Code Playgroud)
Mah*_*iya 25
好,
我设法解决了这个棘手的问题.事情就像我在使用FrameLayout
.不知道为什么,但我想到的可能是隐藏在其他视图背后的图标.
我尝试将图标放在布局的末尾,现在我能够看到Toast
以及Log
.
谢谢大家花时间解决问题..肯定很棘手..
尝试传递上下文而不是应用程序上下文(您还可以添加日志语句来检查该onClick
方法是否曾经运行过):
imgFavorite.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("== My activity ===","OnClick is called");
Toast.makeText(v.getContext(), // <- Line changed
"The favorite list would appear on clicking this icon",
Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
将android:onClick =“ clickEvent”添加到您的图片视图。
<ImageView android:id="@+id/favorite_icon"
android:src="@drawable/small_star"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right" android:paddingTop="63sp"
android:paddingRight="2sp"
android:onClick="clickEvent" />
Run Code Online (Sandbox Code Playgroud)
在您的活动中,您可以创建一个具有相同名称的方法(clickEvent(View v)),仅此而已!您也可以看到日志和吐司文本。
public void clickEvent(View v)
{
Log.i(SystemSettings.APP_TAG + " : " + HomeActivity.class.getName(), "Entered onClick method");
Toast.makeText(v.getContext(),
"The favorite list would appear on clicking this icon",
Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
好吧,我的解决方案是另一种,或者说,错误是:
我只是在另一个两次封装的 xml 布局中拥有另一个具有相同 id 的 imageview <included />
,该布局是在我想要对单击做出反应的那个之前找到的。解决方案:给其中一个提供另一个 id...
归档时间: |
|
查看次数: |
109598 次 |
最近记录: |