我正在开发一个Android应用程序,我有一些Textview
onClick
显示一些统计信息,但我在Textview
上也有一个图标,我需要制作这些图标也可以点击显示其他一些统计信息,有没有办法做到这一点,以便一个Textview
有两个onClickListeners()
分别表现,如下图中的图片可以点击textview.setOnClickListener()
但需要使图标也可以点击其他功能。
先谢谢
答案 0 :(得分:0)
如果在单击时需要执行其他操作而不是TextView,则需要将drawable移动到单独的ImageView
。
答案 1 :(得分:0)
没有直接的方法来实现它。您必须在TextView和
上设置setOnTouchListener
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
答案 2 :(得分:0)
将textview和Imageview嵌入水平LinearLayout中。您可以为其指定背景,使其看起来像一个单独的字段。 使用每个视图的onClick方法,您可以显示您想要的任何统计信息。
答案 3 :(得分:0)
如果要为textview和drawble项目实现两个单击侦听器,则可以转到自定义视图。请参阅此SO thread以实现可绘制项的clicklistener。
答案 4 :(得分:0)
尝试以下代码: -
<强> CustomEditText.java 强>
public class CustomEditText extends EditText
{
private Drawable dRight;
private Rect rBounds;
public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomEditText(Context context) {
super(context);
}
@Override
public void setCompoundDrawables(Drawable left, Drawable top,
Drawable right, Drawable bottom)
{
if(right !=null)
{
dRight = right;
}
super.setCompoundDrawables(left, top, right, bottom);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_UP && dRight!=null)
{
rBounds = dRight.getBounds();
final int x = (int)event.getX();
final int y = (int)event.getY();
//System.out.println("x:/y: "+x+"/"+y);
//System.out.println("bounds: "+bounds.left+"/"+bounds.right+"/"+bounds.top+"/"+bounds.bottom);
//check to make sure the touch event was within the bounds of the drawable
if(x>=(this.getRight()-rBounds.width()) && x<=(this.getRight()-this.getPaddingRight())
&& y>=this.getPaddingTop() && y<=(this.getHeight()-this.getPaddingBottom()))
{
//System.out.println("touch");
this.setText("");
event.setAction(MotionEvent.ACTION_CANCEL);//use this to prevent the keyboard from coming up
}
}
return super.onTouchEvent(event);
}
@Override
protected void finalize() throws Throwable
{
dRight = null;
rBounds = null;
super.finalize();
}
}
<强> XML 强>
<com.example.CustomEditText
android:id="@+id/txtsearch"
…
android:layout_gravity="center_vertical"
android:background="@layout/shape"
android:hint="Enter place,city,state"
android:drawableRight="@drawable/cross"
/>
<强>活性强>
CustomEditText et = (CustomEditText) this.findViewById(R.id.txtsearch);
请参阅以下链接了解更多
Handling click events on a drawable within an EditText
Setting onClickListner for the Drawable right of an EditText
答案 5 :(得分:0)
来自我的项目 - 示例
<RelativeLayout
android:id="@+id/beam_contact_entry_contact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/beam_contact_entry_invite"
android:background="?entry_background" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:orientation="vertical"
android:layout_toRightOf="@+id/contact_info_avatar" >
<TextView
android:id="@+id/beam_contact_fragment_entry_text"
style="?primary_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alexander Great"
android:textSize="18sp" />
<TextView
android:id="@+id/beam_contact_fragment_entry_text_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-4dp"
android:text="mobile"
android:visibility="gone"
style="?secondary_text"
android:textSize="15sp" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:id="@+id/beam_contact_entry_invite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/beam_contact_entry_contact"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/beam_contact_entry_contact"
android:background="?entry_background"
android:orientation="horizontal" >
<ImageView
android:id="@+id/beam_contact_fragment_entry_right_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="?entry_background"
android:duplicateParentState="true"
android:src="@drawable/sv_svyaznoy_contact" />
</LinearLayout>
答案 6 :(得分:0)
实际上你不需要扩展任何类。假设我有EditText editComment
drawableRight
。
editComment.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int DRAWABLE_LEFT = 0;
final int DRAWABLE_TOP = 1;
final int DRAWABLE_RIGHT = 2;
final int DRAWABLE_BOTTOM = 3;
if(event.getAction() == MotionEvent.ACTION_UP) {
if(event.getX() >= (editComment.getRight() - editComment.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
// your action here
}
}
return false;
}
});