Spinner с пользовательским шрифтом и цветом текста - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу использовать собственный шрифт и цвет в Spinner. Я не могу изменить их напрямую в <spinner/>

Вот мой код

<Spinner
                android:id="@+id/spinner2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="5pt"
                android:layout_marginTop="5pt"
                android:backgroundTint="#d9d9d9"
                android:entries="@array/dropdown_main" />

Это должно выглядеть так:

enter image description here

Текстовый шрифт Product Sans Bold, цвет # 333333

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Заголовок, прежде чем вы начнете: Чтобы добавить шрифт, вы должны либо установить минимальную версию API 26 или включить Support Library v26.0. Этот пример показывает, как использовать библиотеку поддержки; единственная реальная разница - <font-family>, использующая пространство имен app или res-auto вместо android.

Вы можете сохранить счетчик как есть, но добавьте значение theme в свой XML:

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="5pt"
    android:layout_marginTop="5pt"
    android:backgroundTint="#d9d9d9"
    android:entries="@array/dropdown_main"
    android:theme="@style/SpinnerTheme"  />

Ваш styles.xml может содержать тему:

<style name="SpinnerTheme">
    <item name="android:textColor">#333333</item>
    <item name="android:fontFamily">@font/product_sans</item>
    <item name="android:textStyle">bold</item>
</style>

Чтобы добавить шрифт, вам нужно сделать несколько вещей:

  1. Добавление папки шрифтов. Щелкните правой кнопкой мыши папку res и выберите Создать> Каталог ресурсов Android . Убедитесь, что вы выбрали тип ресурса «Шрифт» (и, вероятно, также имя).
  2. Добавьте файл шрифта Product Sans в ваш проект откуда-то вроде https://befonts.com/product-sans-font.html.
  3. Щелкните правой кнопкой мыши папку font в res и выберите Создать> Файл ресурсов шрифта . Назовите файл product_sans.xml.
  4. Перечислите добавленные шрифты:

Обязательно добавьте сюда пространство имен app, если вы используете библиотеку поддержки. В противном случае, если вы используете SDK версии 26 или выше, вы можете ссылаться на пространство имен android.

<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font app:font="@font/product_sans_regular" app:fontWeight="400" app:fontStyle="normal" />
    <font app:font="@font/product_sans_italic" app:fontWeight="400" app:fontStyle="italic" />
    <font app:font="@font/product_sans_bold" app:fontWeight="700" app:fontStyle="normal" />
    <font app:font="@font/product_sans_bold_italic" app:fontWeight="700" app:fontStyle="italic" />
</font-family>

Более подробную информацию о шрифтах в вашем XML можно найти здесь: https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml

0 голосов
/ 01 сентября 2018

Здесь вы можете сделать пользовательский XML-файл в папке макета, куда вы можете добавить это:

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#333333"
android:padding="10dp"
android:textStyle="bold"  /> 

А потом в своем коде упомяните это так:

val adapter = ArrayAdapter.createFromResource(this, R.array.array_name, R.layout.custom_spinner) // where array_name consists of the items to show in Spinner
adapter.setDropDownViewResource(R.layout.custom_spinner) // where custom-spinner is mycustom xml file. 

А затем установите адаптер.

...