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

首頁 > 系統 > Android > 正文

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

2019-10-23 19:44:13
字體:
來源:轉載
供稿:網友

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

小編的方案是通過自定義TextView實現。

實現的效果圖:

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长海县| 永昌县| 明水县| 霸州市| 两当县| 萨迦县| 丰顺县| 西青区| 安阳县| 海门市| 托里县| 朔州市| 鹤岗市| 邢台县| 五寨县| 达日县| 万宁市| 天长市| 武鸣县| 抚远县| 泸西县| 太白县| 且末县| 清远市| 白城市| 井冈山市| 宁安市| 邵阳市| 合山市| 三台县| 文登市| 泗水县| 东港市| 普兰店市| 廉江市| 寿光市| 银川市| 台东市| 兴城市| 原平市| 探索|