使用setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom)在drawView的textView上获取onclick事件

时间:2014-01-03 11:38:41

标签: android textview onclicklistener android-drawable

我只是想知道我们可以在textview上的setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom)上获得两个不同的onclick事件。 首先onclick textview和其他drawable或者我可以onclick只是drawable而不是textview。任何帮助将不胜感激。谢谢。

4 个答案:

答案 0 :(得分:4)

我是通过自己听点击事件来实现的。如下所示:

    lTextView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_UP && event.getX() < dpTopx(MainActivity.this, 19) )
            {
                Log.v("Click", "Clicked on back button");
            }
            return true;
        }
    });

其中dpToPx只是将dp转换为像素的函数。所以现在左边的19-dp区域(包含左侧可绘制区域)是可点击的。

答案 1 :(得分:2)

不,你不能。复合对象是ONE。即使你用一个drawable装饰它 如果你想要两个单独的点击事件,那么你必须使用两个不同的对象(即:一个ImageView和一个TextView) 但这不是最佳做法。

答案 2 :(得分:1)

事件只获得资源ID。所以对象只有一个Id。所以只有一个onClick事件可以监听。 您可以通过将此textView包装在父布局

中来实现此目的

答案 3 :(得分:0)

我更喜欢使用图片视图和textview或编辑视图的布局

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
         android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/black_border"
        android:orientation="horizontal"
        android:weightSum="3">
 <ImageView
        android:id="@+id/rdv_location_icon"
        android:layout_width="0dp"
        android:layout_weight="0.5"
        android:layout_gravity="center"
        android:background="@android:color/white"
        android:src="@drawable/icon_location_et"
        android:layout_height="wrap_content"
        />

<TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2.5"
        android:gravity="center"
        android:lines="3"
        android:text="Address"
        android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>