微调与自定义文本的字体和颜色(Spinner with custom text font and c

2019-09-30 01:09发布

我想使用自定义的字体和颜色的微调。 我不能直接修改它们<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" />

它应该是这样的:

文本字体为产品三世大胆,颜色为#333333

Answer 1:

在这里,您可以在布局文件夹中的自定义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. 

然后设置适配器。



Answer 2:

抬起头你开始之前:要添加的字体,你要么要设置的26的最低API版本或包括支持库v26.0。 这个例子说明了如何使用支持库; 唯一的真正区别是<font-family>使用appres-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文件夹并选择New> Android的资源目录 。 确保你选择“字体”的资源类型(以及可能的名称为好。)
  2. 产品Sans字体文件的地方,比如添加到项目中https://befonts.com/product-sans-font.html 。
  3. 用鼠标右键单击font文件夹下的res ,并选择New>字体资源文件 。 命名该文件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



文章来源: Spinner with custom text font and color