Android DrawableTextView图片文字居中显示

博客探讨了如何在Android中让TextView的Drawable和文字同时居中显示的问题。作者提出通过创建一个自定义的DrawableTextView,重写onDraw方法,利用Canvas的translate平移功能,实现了原生TextView无法轻易达到的居中效果。
摘要由CSDN通过智能技术生成

在我们开发中,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 
Android开发中,要在`drawable`资源中显示一个具有1280*720分辨率的图片,并在图片中间添加文字,通常需要使用XML来定义一个可绘制资源(drawable)。这个过程可以通过以下几个步骤完成: 1. 首先,你需要准备一张1280*720像素的图片,这将是背景图片。 2. 然后,在你的项目的`res/drawable`文件夹中创建一个新的XML文件,用于定义一个带有文字的`layer-list`,或者直接使用`bitmap`与`textview`组合。 3. 在XML文件中,你可以使用`layer-list`来叠加多个层,第一个层是你的背景图片,第二个层可以是一个居中的`TextView`,用于显示文字。 以下是一个简单的例子: ```xml <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 背景图片 --> <item> <bitmap android:src="@drawable/your_background_image" android:gravity="center"/> </item> <!-- 文字 --> <item> <bitmap android:gravity="center" android:src="@drawable/your_text_image"/> </item> </layer-list> ``` 在这个例子中,`your_background_image`应该是你的背景图片资源,而`your_text_image`可以是一个带有透明背景的图片,里面包含了你想要显示的文字。确保`your_text_image`的尺寸和位置已经调整好,使得文字能够居中显示。 4. 将这个`layer-list` drawable应用到你的`ImageView`或者`TextView`的`android:background`属性上。 ```xml <ImageView android:layout_width="1280dp" android:layout_height="720dp" android:src="@drawable/your_drawable" android:scaleType="centerInside"/> ``` 请注意,上面的`ImageView`的`layout_width`和`layout_height`是按照dp单位设置的,为了确保在不同设备上能有良好的显示效果,你可能需要使用`scaleType`属性来调整图片的缩放方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值