自定义旋转选择器字体

8
我有一个简单列表的旋转框。我想知道是否可以更改旋转框内字体的样式。或者,是否有任何方法可以改变字体的样式、大小和颜色。
非常感谢您提供的任何帮助。
1个回答

7

我没有试过,但XML中的android:typeface或代码中的setTypeface()应该可以工作。

编辑:请按照这里的指导操作。

首先,在您的res/layout目录中创建一个名为“my_spinner_style.xml”的新XML文件,并放入以下类似内容:

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="9pt"
android:singleLine="True"
android:id="@+id/spinnerTarget"
android:textColor="#000000"
android:gravity="center"/>

然后在你的代码中,使用类似以下的语句:

Spinner mySpinner = (Spinner) findViewById(R.id.my_spinner);
mySpinnerArrayAdapter = new MyCustomArrayAdapter(this, R.layout.my_spinner_style);  
mySpinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

通常情况下,您需要为第二行创建一个新的ArrayAdapter,但在这种情况下,您需要创建一个自定义的ArrayAdapter并覆盖从我们自定义的Spinner样式获取TextView的方法。

因此,您需要加入自定义ArrayAdapter的代码,如下所示:

private class MyArrayAdapter extends ArrayAdapter {

    public MyArrayAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    public TextView getView(int position, View convertView, ViewGroup parent) {
        TextView v = (TextView) super.getView(position, convertView, parent);
        v.setTypeface(myFont);
        return v;
    }

    public TextView getDropDownView(int position, View convertView, ViewGroup parent) {
        TextView v = (TextView) super.getView(position, convertView, parent);
        v.setTypeface(myFont);
        return v;
    }

}

您想要使用的字体需要位于assets/fonts目录中,并且您可以通过以下方式访问它:

Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/myfont.ttf");

这就是大致的内容了。


1
这就是我的问题所在。Spinner中没有android:typeface。 - Andro Selva
4
好的,解决方案比我想象的要复杂。在这里找到了一些解决方法:这里这里。希望这有所帮助。 - Gabriel Negut
很酷啊,谢谢。这正是我所期待的。 - Andro Selva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接