可以响应各个方向CompoundDrawables点击操作的TextView的使用
本文主要介紹如何使用一個可以響應各個方向CompoundDrawables點擊操作的TextView。關于其實現原理見可以響應各個方向CompoundDrawables點擊操作的TextView的實現原理。
TextView可以通過setCompoundDrawablesWithIntrinsicBounds在TextView內容的上下左右添加圖片方便用戶的需要,但默認并沒有提供設置點擊這些圖片后響應操作的接口。本文介紹自己自定義的一個TextView達到此效果,主要功能為設置TextView各個方向圖片的響應。
首先讓我們看下效果
點擊最下面的圖片響應如上,執行結果為顯示“Bottom”的Toast,可以下載Demo代碼CompoundDrawablesTextViewDemo編譯運行。
?
1、引入公共庫
引入 TrineaAndroidCommon GoogleCode或(TrineaAndroidCommon Git)作為android項目的公共類,或是自己抽取其中的CompoundDrawablesTextView部分使用
?
2、在xml中配置
用現在的CompoundDrawablesTextView替換原來的TextView即可
<com.trinea.common.view.CompoundDrawablesTextViewandroid:id="@+id/textWithImage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="3dp"/>?
3、在java類中調用
主要是設置TextView的CompoundDrawables和DrawableClickListener
CompoundDrawablesTextView textWithImage = (CompoundDrawablesTextView)this.findViewById(R.id.textWithImage); textWithImage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.image, R.drawable.image, R.drawable.image, R.drawable.image); textWithImage.setDrawableClickListener(new ImageClickListener());class ImageClickListener implements DrawableClickListener {@Overridepublic void onClick(DrawablePosition position) {switch (position) {case LEFT:// 左邊圖片被點擊的響應Toast.makeText(context, "left", Toast.LENGTH_SHORT).show();break;case RIGHT:// 右邊圖片被點擊的響應Toast.makeText(context, "right", Toast.LENGTH_SHORT).show();break;case BOTTOM:// 底部圖片被點擊的響應Toast.makeText(context, "bottom", Toast.LENGTH_SHORT).show();break;case TOP:// 上邊圖片被點擊的響應Toast.makeText(context, "top", Toast.LENGTH_SHORT).show();break;default:break;}} }可以根據自己需要補充上面switch中的響應函數即可
?
?
4、其他設置
4.1 設置圖片可響應點擊區域允許的誤差
setLazy(int, int)表示設置Drawable可響應的點擊區域x和y方向允許的誤差,正數表示點擊范圍向外擴展,負數表示點擊范圍向內收縮
?
4.2 設置是否同時被點擊的Drawable都響應
setAllDrawableTouchedResponse(boolean),表示是否所有被touch的Drawable都響應事件,true表示都響應,false表示按照左上右下的順序響應第一個點擊范圍內的Drawable
注意:若點擊的位置同時在多個圖片的有效范圍內,響應順序為左上右下,設置 setAllDrawableTouchedResponse(boolean)為false后就按順序響應第一個,其他被點擊圖片的響應忽略。
?
4.3 設置是否始終響應OnClickListener
setAlwaysClick(boolean)表示是否始終響應OnClickListener,true表示響應Drawable后依然響應OnClickListener,false表示響應Drawable后不再響應OnClickListener。
轉載于:https://www.cnblogs.com/trinea/archive/2012/06/18/2557201.html
總結
以上是生活随笔為你收集整理的可以响应各个方向CompoundDrawables点击操作的TextView的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在阿里云ECS上安装Docker、Tom
- 下一篇: 将.protobuf文件转成.cs文件方