Для ясности этот вопрос был значительно отредактирован.
Скажем, у меня есть .png ресурс 100x100px:
Я хочу использовать это изображение в качестве фона для моего 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
и с его размером.
Как я могу достичь своей цели?