TextView не изменяет размер автоматически, несмотря на то, что для него установлено значение uniform

#java #android #textview #imageview

#java #Android #textview #imageview

Вопрос:

Я пытаюсь работать с функцией автоматического определения размера TextView по умолчанию, но это не работает. Я хочу, чтобы тексты моих TextViews уменьшались в размере, если они переходят на следующую строку, и, несмотря на настройку android:autoSizeStepGranularity="15dp" , я почти не вижу разницы. 2 TextViews находятся поверх ImageView

Это мой XML:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".TopImageFragment">

    <ImageView
        android:id="@ id/meme_image_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/click"
        android:scaleType="fitXY"
        android:tag="img1"
        />

    <TextView
        android:id="@ id/top_text_view"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/meme_image_view"
        android:layout_centerHorizontal="true"
        android:autoSizeTextType="uniform"
        android:autoSizeStepGranularity="15dp"
        android:shadowColor="#000"
        android:shadowDx="2"
        android:shadowDy="2"
        android:shadowRadius="2"
        android:textAllCaps="true"
        android:textColor="@android:color/white"
        android:textAlignment="center"
        android:fontFamily="@font/impact"
        android:gravity="center"
        android:textSize="50sp" />


    <TextView
        android:id="@ id/bottom_text_view"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/meme_image_view"
        android:layout_centerHorizontal="true"
        android:autoSizeTextType="uniform"
        android:autoSizeStepGranularity="15dp"
        android:shadowColor="#000"
        android:shadowDx="1.5"
        android:shadowDy="1.3"
        android:shadowRadius="1.6"
        android:textAllCaps="true"
        android:textColor="@android:color/white"
        android:textAlignment="center"
        android:fontFamily="@font/impact"
        android:gravity="center"
        android:textSize="50sp" />

</RelativeLayout>
  

И вот пример того, о чем я говорю:

введите описание изображения здесь

Комментарии:

1. Вы устанавливаете высоту на wrap_content . Высота представления не ограничена, поэтому она просто увеличивается. Если вы установите для него точное значение, размер текста изменится.

2. @EugenPechanec, лол, какая глупая ошибка. Большое вам спасибо. Если вы опубликуете это как полный ответ, я приму и поддержу его.

Ответ №1:

Для ваших текстовых представлений установлена высота wrap_content . Они будут автоматически увеличиваться, чтобы вместить весь текст, прежде чем изменять размер текста.

Выберите один из них в зависимости от вашего варианта использования (с вашими собственными значениями, конечно):

 android:layout_height="100dp"
  

или

 android:layout_height="wrap_content"
android:maxHeight="100dp"
  

Комментарии:

1. Поддержано и принято! Если вы считаете, что это был хорошо заданный вопрос, не могли бы вы также дать мне положительный отзыв?

2. Я бы не «просил» о повышении голосов, если бы повышение голосов не использовалось как способ для высокопоставленных пользователей задавить вопросы, потому что это не шло рука об руку с их субъективным пониманием того, что такое хороший вопрос, в отличие от того, что Stackoverflow описывает как хороший вопрос. Я задаю свои вопросы в руководстве SO на другой вкладке, и все же у меня есть люди, которые закрывают их, потому что они получили привилегии. Кстати. Я попросил повысить голос, если вы считаете, что это был хорошо заданный вопрос. Итак, в конце концов, вы проголосовали за него, основываясь на ваших собственных заслугах.