相关疑难解决方法(0)

如何以编程方式将字体自定义字体设置为Spinner文本?

我的资产文件夹中有一个ttf字体文件.我知道如何将它用于textviews:

Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
Run Code Online (Sandbox Code Playgroud)

我已经定义了在我自己的xml文件中查找我的微调器文本(如在android中的usuall):

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="center" 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />
Run Code Online (Sandbox Code Playgroud)

我只是无法从代码中引用此textview,我总是得到空指针异常.我尝试过:

TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
Run Code Online (Sandbox Code Playgroud)

即使我自己的xml中定义的微调器文本,是否可以选择我的外部字体?

谢谢.

编辑回答:

这有效:

String [] items = new String[2];
    items[0]="Something1";
    items[1]="Something2";

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    R.layout.spinaca, items) {

         public View getView(int position, View convertView, ViewGroup parent) {
                 View v = super.getView(position, convertView, parent);

                 Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
                 ((TextView) v).setTypeface(externalFont);

                 return v;
         }


         public View getDropDownView(int position,  View convertView,  ViewGroup parent) {
                  View v =super.getDropDownView(position, convertView, …
Run Code Online (Sandbox Code Playgroud)

fonts android spinner android-fonts android-spinner

89
推荐指数
3
解决办法
7万
查看次数

如何更改android的微调器背景设计和颜色?

我正在开发一个应用程序,我需要更改微调器背景布局以匹配背景颜色.我研究并发现我需要创建一个9补丁图像.我已经完成了创建9补丁图像并在应用程序中使用但它看起来比普通微调器更大,而且我也看不到微调器中的下拉按钮.

如果你们从开始为Spinner创建9补丁图像并在应用程序中使用它,我很高兴为我提供了一个明确的教程.

微调器看起来像

微调器的代码

 <Spinner
        android:id="@+id/spnIncredientone"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtMixtureTitle" 
        android:layout_marginLeft="5dip"
        android:layout_marginRight="5dip"
        android:background="@drawable/spinner_background"
        android:prompt="@string/selectmixture" />
Run Code Online (Sandbox Code Playgroud)

android nine-patch android-spinner

64
推荐指数
8
解决办法
19万
查看次数

更改微调器下拉图标

我找到的解决方案更改了微调器下拉图标,其中所有:

1.创建一个自定义drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="false" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="true" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="false" android:state_pressed="true" />
    <item android:drawable="@drawable/vector_drawable_ic_dropdown_black" />
</selector>
Run Code Online (Sandbox Code Playgroud)

2.将drawable设置为微调器背景:

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:background="@drawable/custom_spinner_icon"
    android:gravity="center"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:textColor="@color/textcolorprimary" />
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

正如您所看到的,这不是一个可接受的解决方案,因为图标需要右对齐而不是拉伸.

我该怎么做才能使图标不拉伸并对齐?

编辑

由于没有可行的解决方案,我想我必须指出我的问题.这就是我的Spinner使用标准主题的样子:

<Spinner
    android:id="@+id/products_download_spinner_language"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:gravity="center"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:textColor="@color/textcolorprimary"
    android:theme="@android:style/Theme.Holo.Light.DarkActionBar" />
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

而我想要的一切(我猜这真的不多)正在改变箭头.我不希望显示右下角的箭头,我希望这个箭头垂直居中显示在右边:

在此输入图像描述

到目前为止我尝试的每个解决方案:

旋转下拉箭头

如何在微调器中设置下拉箭头?

根本没工作.他们有拉伸的图标或底线缺失或其他东西完全错误.我只想要另一支箭.

android android-spinner

40
推荐指数
4
解决办法
8万
查看次数

带边框的微调

我想设计一个简单的微调器,如下所示:

在此处输入图片说明

下面是我的代码:sinnerBg.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item
      android:state_window_focused="false" android:state_enabled="true"
      android:drawable="@android:color/black" />
  <item>
    <layer-list>
      <item>
        <shape>

          <solid android:color="#ffffff" />
          <stroke android:width="1dp" android:color="#000000" />



          <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
        </shape>
      </item>
      <item >
        <bitmap android:gravity="right" android:src="@drawable/arrow_down" />
      </item>
    </layer-list>
  </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

在 style.xml 中:

 <style name="spinner_style">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@drawable/spinnerBg</item>
    <item name="android:layout_margin">10dp</item>
    <item name="android:paddingLeft">8dp</item>
    <item name="android:paddingRight">20dp</item>
    <item name="android:paddingTop">5dp</item>
    <item name="android:paddingBottom">5dp</item>
    <item name="android:popupBackground">#000000</item>
    <item name="backgroundTint">#ffffff</item>
    <item name="android:textColor">#000000</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

我的 axml 文件中的微调器:

<Spinner
            android:layout_width="64.0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.75"
            android:ems="10"
            android:spinnerMode="dropdown"
            android:layout_marginRight="6.0dp"
            android:id="@+id/PIC"
            android:layout_marginTop="12.5dp"
            style="@style/spinner_style" /> …
Run Code Online (Sandbox Code Playgroud)

android android-spinner

5
推荐指数
1
解决办法
8620
查看次数

如何在android中自定义Spinner Background?

我想在android中改变微调器的外观,我希望它对所有设备都是一样的.我试图做同样的事情,但未能这样做.如果我使用Tag,我无法自定义它.我正在添加我想要的图像截图.

http://prntscr.com/gb3oh9

android android-spinner

4
推荐指数
1
解决办法
5057
查看次数