全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android DrawableTextView图片文字居中显示实例

 在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢?

小编的方案是通过自定义TextView实现。

实现的效果图:

注:第一行为原生TextView添加android:drawableLeft

第二行为自定义TextView实现的效果。

实现思路:

继承TextView,覆盖onDraw(Canvas canvas),在onDraw中先将canvas进行translate平移,再调用父类onDraw进行绘制。

DrawableTextView.Java:
package com.xing.drawabletextview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.TextView;
/**
 * Created by Administrator on 2017/2/28.
 */
public class DrawableTextView extends TextView {
  public DrawableTextView(Context context) {
    this(context, null);
  }
  public DrawableTextView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
  }
  public DrawableTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
  }
  @Override
  protected void onDraw(Canvas canvas) {
    // getCompoundDrawables() : Returns drawables for the left, top, right, and bottom borders.
    Drawable[] drawables = getCompoundDrawables();
    // 得到drawableLeft设置的drawable对象
    Drawable leftDrawable = drawables[0];
    if (leftDrawable != null) {
      // 得到leftDrawable的宽度
      int leftDrawableWidth = leftDrawable.getIntrinsicWidth();
      // 得到drawable与text之间的间距
      int drawablePadding = getCompoundDrawablePadding();
      // 得到文本的宽度
      int textWidth = (int) getPaint().measureText(getText().toString().trim());
      int bodyWidth = leftDrawableWidth + drawablePadding + textWidth;
      canvas.save();
      canvas.translate((getWidth() - bodyWidth) / 2, 0);
    }
    super.onDraw(canvas);
  }
}

布局文件中引入:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="horizontal">
    <com.xing.drawabletextview.DrawableTextView
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:drawableLeft="@drawable/ic_one"
      android:drawablePadding="10dp"
      android:gravity="center_vertical"
      android:text="21" />
    <com.xing.drawabletextview.DrawableTextView
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:drawableLeft="@drawable/ic_two"
      android:drawablePadding="10dp"
      android:gravity="center_vertical"
      android:text="99" />
    <com.xing.drawabletextview.DrawableTextView
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:drawableLeft="@drawable/ic_three"
      android:drawablePadding="10dp"
      android:gravity="center_vertical"
      android:text="99+" />
  </LinearLayout>

以上所述是小编给大家介绍的Android DrawableTextView图片文字居中显示实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# android  # textview居中  # textview文字居中显示  # Android Canvas drawText文字居中的一些事(图解)  # Android自定义TextView实现文字图片居中显示的方法  # Android EditText搜索框实现图标居中  # Android中搜索图标和文字居中的EditText实例  # Android编程实现图片的浏览、缩放、拖动和自动居中效果  # android imageview图片居中技巧应用  # Android图文居中显示控件使用方法详解  # 小编  # 自定义  # 在此  # 给大家  # 先将  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # content  # import  # DrawableTextView  # Context 


相关文章: 详解jQuery停止动画——stop()方法的使用  南宁网站建设制作定制,南宁网站建设可以定制吗?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  ,网页ppt怎么弄成自己的ppt?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何在VPS电脑上快速搭建网站?  如何批量查询域名的建站时间记录?  微信h5制作网站有哪些,免费微信H5页面制作工具?  公司网站的制作公司,企业网站制作基本流程有哪些?  定制建站如何定义?其核心优势是什么?  如何选择PHP开源工具快速搭建网站?  ,想在网上投简历,哪几个网站比较好?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何选择适配移动端的WAP自助建站平台?  如何快速查询域名建站关键信息?  如何通过二级域名建站提升品牌影响力?  如何快速搭建安全的FTP站点?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  定制建站模板如何实现SEO优化与智能系统配置?18字教程  青浦网站制作公司有哪些,苹果官网发货地是哪里?  开封网站制作公司,网络用语开封是什么意思?  广州商城建站系统开发成本与周期如何控制?  Thinkphp 中 distinct 的用法解析  建站之星安全性能如何?防护体系能否抵御黑客入侵?  如何选择服务器才能高效搭建专属网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何在阿里云通过域名搭建网站?  高防服务器租用如何选择配置与防御等级?    建站之星安装步骤有哪些常见问题?  如何彻底删除建站之星生成的Banner?  C#如何序列化对象为XML XmlSerializer用法  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何快速选择适合个人网站的云服务器配置?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何通过FTP空间快速搭建安全高效网站?  如何快速生成高效建站系统源代码?  网站制作难吗安全吗,做一个网站需要多久时间?  如何构建满足综合性能需求的优质建站方案?  如何配置FTP站点权限与安全设置?  用v-html解决Vue.js渲染中html标签不被解析的问题  建站之星上传入口如何快速找到?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  股票网站制作软件,网上股票怎么开户?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  Swift中循环语句中的转移语句 break 和 continue  招贴海报怎么做,什么是海报招贴? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。