自定义控件让EditText的drawableLeft与文本一起居中显示
来源:互联网 发布:淘宝退款和退货区别 编辑:程序博客网 时间:2024/06/05 02:41
如上图 项目中要求的显示效果是serch图片和EditText的文本一起在中间位置。
尝试设置了很多EditText均不能实现满意的效果,其中:
android:drawableLeft=""android:drawableRight=""设置的位置均在两边,不能满足需求。
在此推荐一个方法,用自定义的EditText,如下:public class MyEditText extends EditText { public MyEditText(Context context) { super(context); } public MyEditText(Context context, AttributeSet attrs) { super(context, attrs); } public MyEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public MyEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onDraw(Canvas canvas) { Drawable[] drawables = getCompoundDrawables(); if (drawables != null) { Drawable drawableLeft = drawables[0]; if (drawableLeft != null) { float textWidth = getPaint().measureText(getText().toString()); int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = 0; drawableWidth = drawableLeft.getIntrinsicWidth(); float bodyWidth = textWidth + drawableWidth + drawablePadding; canvas.translate((getWidth() - bodyWidth) / 5, 0); } } super.onDraw(canvas); }代码中黄色部分中的数字“5”,可控制图片的位置,此时再设置drawableLeft即可达到如图效果。另外TextView也可以用此方法实现类似效果
阅读全文
0 0
- 自定义控件让EditText的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView、Button的drawableLeft和drawableRight与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView(Radiobutton)、Button的drawableLeft和drawableRight与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 自定义控件让TextView的drawableLeft与文本一起居中显示
- 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
- 让TextView的drawableLeft与文本一起居中
- drawableleft与文本一起居中显示
- drawableLeft与文本一起居中显示
- TextView的drawableLeft与文本一起居中显示(以及代码设置drawableLeft)
- nginx负载均衡
- SpringBoot工程+热部署进行远程调试
- 串口控件发送数据初始化设置(MFC-串口控件发送字符串)
- Tornado 文档学习:基础知识
- xamarin学习笔记A17(安卓Parcel和IParcelable)
- 自定义控件让EditText的drawableLeft与文本一起居中显示
- iOS开发—解析天气预报
- install cmake 3.5 && install leveldb
- iOS 改变状态栏颜色(亮白、黑色)
- 关于对H264码流的PS的封装的相关代码实现
- js 程序设计基础2
- iOS 各种demo链接汇总~富文本
- 数组名
- C语言中代码中的换行