在我的应用程序中,我正在显示一个包含不同字体样式的微调控件,例如,如果字体名称是US DNealian,那么它也应该以相同的字体显示。我知道如何通过view.setTypeface(tf)设置特定视图的字体,但我使用数组arr_fonts来填充ArrayList,而ArrayList将填充微调器的适配器。下面是我正在使用的代码片段。
用于填充ArrayList的->字符串数组
private String arr_fonts[] = {"US: D'Nealian", "US: D'Nealian Cursive", "US: Zaner-Bloser", "US: Zaner-Bloser Cursive",
"Aus: NSW/ACT", "Aus: NSW/ACT Cursive", "Aus: Qld Beginners", "Aus: Qld Cursive", "Aus: SA Beginners", "Aus: SA Cursive",
"Aus: Tas Beginners", "Aus: Tas Cursive", "Aus: Vic/NT/WA", "Aus: Vic/NT/WA Cursive", "WA Sassoon", "WA Sassoon Infant",
"NZ Beginners","UK Beginners", "UK Cursive", "Century Gothic (HWT)"};用于灌装适配器的->Arraylist
ARRLIST_FONTS = new ArrayList<String>(Arrays.asList(arr_fonts));私有空set_font_name_Adapter() {
sp_fonts = (Spinner)findViewById(R.id.spFont);
font_name_Adapter= new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,ARRLIST_FONTS)
{
public View getView(int position, View convertView,ViewGroup parent) {
View v = super.getView(position, convertView, parent);
((TextView) v).setTextSize(12);
((TextView) v).setTextColor(Color.WHITE);
return v;
}};
font_name_Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_fonts.setAdapter(font_name_Adapter);
sp_fonts.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
font = ARRLIST_FONTS.get(arg2);
}
System.out.println("Selected item is ................."+font);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}对于所有的字体名称,我都有.ttf。但我不知道如何改变每个项目的字体在旋转单独。
任何人可以为同样的东西或任何链接或好的教程提供建议。
谢谢。

发布于 2012-12-20 20:09:35
尝试为微调器中的所有TextView设置自定义字体:
Typeface typeface;
font_name_Adapter= new ArrayAdapter<String>
(this,android.R.layout.simple_spinner_item,ARRLIST_FONTS)
{
public View getView(int position, View convertView,ViewGroup parent) {
View v = super.getView(position, convertView, parent);
((TextView) v).setTextSize(12);
((TextView) v).setTextColor(Color.WHITE);
if(position<=ARRLIST_FONTS.size()){
typeface =
Typeface.createFromAsset(Your_Current_Activity.this.getAssets(),
"fonts/yourfontname.ttf");
((TextView) v).setTypeface(typeface);
}
return v;
}发布于 2012-12-21 14:03:39
首先,在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,并覆盖从自定义微调器样式中获取TextView的方法。
因此,您需要为您的自定义类添加代码,如下所示:私有类MyArrayAdapter扩展ArrayAdapter {
公有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");https://stackoverflow.com/questions/13971516
复制相似问题