为了清楚起见,这个问题已被显着编辑。
假设我有一个 100x100px 的 .png 资源:
我想将该图像用作我TextView
的 s 的背景,其大小由其内容决定,该内容在运行时是可变的。特别是,我希望该图像在TextView
尺寸大于 100x100px 时平铺,并且我希望在TextView
小于 100x100px 时对其进行裁剪。
后者似乎是一个困难的问题。
示例代码
我有一个可绘制的资源bg_tile.xml
:
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/bg"
android:tileMode="repeat" />
我的布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@drawable/bg_tile"
android:text="Short text"
android:textSize="20sp" />
<TextView android:layout_margin="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_tile"
android:text="Long text long text long text long text long text long text long text long text long textlong text long text long text long text long text long text long text long text long textlong text long text long text long text long text long text long text long text long text "
android:textSize="20sp" />
</LinearLayout>
发生了什么
这是此代码结果的屏幕截图,也是我期望/想要的结果之一:
如您所见,平铺部分有效,底部瓷砖正在被切断。但是,当TextView
小于背景时, 将TextView
采用背景的大小。
建议的解决方案
android:gravity="clip_vertical|clip_horizontal"
- 这不起作用,即使没有 tilemode。- 用作
match_parent
布局参数 - 不是一个选项。 - 设置固定高度 - 无法确定内容的
TextView
长度以及大小。
我怎样才能实现我的目标?