国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android DrawableTextView圖片文字居中顯示實例

2019-12-12 03:32:58
字體:
來源:轉載
供稿:網友

 在我們開發(fā)中,TextView設置Android:drawableLeft一定使用的非常多,但Drawable和Text同時居中顯示可能不好控制,有沒有好的辦法解決呢?

小編的方案是通過自定義TextView實現(xiàn)。

實現(xiàn)的效果圖:

這里寫圖片描述

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

第二行為自定義TextView實現(xiàn)的效果。

實現(xiàn)思路:

繼承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圖片文字居中顯示實例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 赤水市| 德保县| 庆安县| 锦屏县| 巩留县| 忻州市| 玛纳斯县| 周口市| 阿勒泰市| 朔州市| 夏邑县| 吉安县| 临朐县| 洛川县| 海伦市| 五河县| 柳河县| 甘孜| 荥经县| 永顺县| 开原市| 昌黎县| 航空| 石狮市| 衡山县| 德化县| 从化市| 甘孜县| 新巴尔虎右旗| 西宁市| 文水县| 大名县| 迁西县| 长兴县| 宜阳县| 颍上县| 芒康县| 兰西县| 张家港市| 阳东县| 称多县|