Я пытаюсь добавить немного пространства между строками в мои TextViews, используя android:lineSpacingMultiplier
из документации :
Дополнительный интервал между строками текста, как множитель.
Должно быть значением с плавающей запятой, например, «1.2».
Поскольку я использую это в нескольких различных TextViews, я хотел бы добавить глобальное измерение / значение к моим ресурсам, но я не знаю, какой тег использовать, если он вообще существует. Я перепробовал все типы ресурсов, которые имеют для меня смысл, но ни один из них не работает.
То, что я хотел бы иметь, было бы что-то вроде этого:
<resources>
<dimen name="text_line_spacing">1.4</dimen>
</resources>
Изменить: я знаю android:lineSpacingExtra
(который требует измерения с добавленной единицей), но я хотел бы использовать, android:lineSpacingMultiplier
если это возможно.
<item type="string" format="float" name="my_float">0.5</item>
и этот код для его получения:float my_float = Float.parseFloat (getResources ().getString (R.string.my_float));
<string>
тега?Как описано в этой ссылке http://droidista.blogspot.in/2012/04/adding-float-value-to-your-resources.html
Объявить в измерении .xml
Ссылка из XML
Ссылка из Java
источник
Все решения предлагают вам использовать предопределенное значение с плавающей запятой через код.
Но если вам интересно, как ссылаться на предопределенное значение с плавающей точкой в XML (например, макеты), то ниже приведен пример того, что я сделал, и он работает отлично:
Определите значения ресурсов как,
type="integer"
ноformat="float"
, например:И позже используйте их в вашем макете, используя
@integer/name_of_resource
, например:источник
<dimen>
Я также нашел обходной путь, который, кажется, работает нормально без предупреждений:
Затем:
Предупреждение : это работает только когда вы используете измерение из кода Java, а не из XML
источник
type="fraction"
чтобы избежать ошибок в коде JavaДобавьте число с плавающей точкой в dimensions.xml:
<item format="float" name="my_dimen" type="dimen">1.2</item>
Для ссылки из XML:
Чтобы прочитать это значение программно вы можете использовать
ResourcesCompat.getFloat
из androidx.coreGradle зависимость:
implementation("androidx.core:core:${version}")
Использование:
источник
Мы также можем использовать его как ориентир для схемы ограничений.
Создать файл integer.xml и добавить в
Использовать из файла layout.xml
источник
Я использовал стиль, чтобы решить эту проблему. Официальная ссылка здесь .
Довольно полезный материал. Вы создаете файл для хранения ваших стилей (например, "styles.xml") и определяете их внутри него. Затем вы ссылаетесь на стили в вашем макете (например, "main.xml").
Вот пример стиля, который делает то, что вы хотите:
Допустим, вы хотите изменить простое TextView с этим. В вашем файле макета вы наберете:
Попробуйте - это, по сути, как все встроенный пользовательский интерфейс делается на Android. А с помощью стилей у вас есть возможность изменить все виды других аспектов ваших видов.
источник
Если у вас есть простые числа с плавающей точкой, которыми вы управляете, вы также можете иметь целое число в ресурсах и делить его на количество десятичных знаков, которое вам нужно прямо в коде.
Так как то так
используется с 2 знаками после запятой
и это делает 3.56f
Не сказать, что это самое элегантное решение, но для простых проектов это удобно.
источник
Я нашел решение, которое работает, но приводит к
Warning
(WARN/Resources(268): Converting to float: TypedValue{t=0x3/d=0x4d "1.2" a=2 r=0x7f06000a}
) в LogCat.источник
Хотя я использовал принятый ответ в прошлом, кажется, что с текущими инструментами сборки это можно сделать:
Я использую Build Tools, основная версия 29.
источник