Фон TextView Shape не отображается, когда текст большой и прокручивается - PullRequest
1 голос
/ 08 мая 2019

Это проблемный сценарий:

У меня есть Activity, включая ScrollView, У ScrollView есть только один LinearLayout как ребенок, а у LinearLayout есть один TextView. Файл XML находится здесь:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bubble_shape"
                android:text="@string/TestLargeText"/>
        </LinearLayout>

    </HorizontalScrollView>

</LinearLayout>

и "bubble_shape" drawable здесь:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <corners
        android:bottomLeftRadius="15dp"
        android:bottomRightRadius="15dp"
        android:topLeftRadius="15dp"
        android:topRightRadius="15dp"/>
    <padding
        android:bottom="12dp"
        android:left="12dp"
        android:right="12dp"
        android:top="12dp"/>
    <stroke
        android:width="8dp"
        android:color="#ff00ff"/>
</shape>

У меня большой текст в TextView, и вот проблема: когда TextView имеет большой текст, форма фона не отображается. Вы можете увидеть проблему на картинках ниже:

the xml file width small text

and the same xml width a large text!

как мне решить проблему?

1 Ответ

1 голос
/ 09 мая 2019

Я решил вашу проблему двумя способами.

1 - установите "bubble_shape" на HorizontalScrollView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bubble_shape">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/TestLargeText" />
        </LinearLayout>

    </HorizontalScrollView>

</LinearLayout>

2- или просто измените тег углов в вашем "bubble_shape", напримерэто:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="15dp" />        

    <padding
        android:bottom="12dp"
        android:left="12dp"
        android:right="12dp"
        android:top="12dp" />


    <stroke
        android:width="8dp"
        android:color="#ff00ff" />
</shape>
...