我想做的只是更改我的微调器文本的字体字体和大小。
我做了一些初步尝试。什么都没有崩溃,但我的旋转器是空白的。 (我还没有实现自定义字体,我只是想让微调器先工作。
在代码中:
protected SpinnerSortAdapter sAdapter;
protected Spinner sort;
protected String[] strings;
sort = (Spinner) getActivity().findViewById(R.id.spinner2);
strings = getActivity().getResources().getStringArray(R.array.sorting_items);
SpinnerSortAdapter sAdapter = new SpinnerSortAdapter(getActivity(),
android.R.layout.simple_spinner_item, strings);
sAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sort.setAdapter(sAdapter);
sort.setOnItemSelectedListener(new MyOnItemSelectedListener());
适配器:
public class SpinnerSortAdapter extends ArrayAdapter<String> {
public SpinnerSortAdapter(Context context, int textViewResourceId,
String[] strings) {
super(context, textViewResourceId, strings);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (view instanceof TextView) {
((TextView) view).setTextSize(5);
}
return view;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
return (row);
}
} enter code here
答案 0 :(得分:8)
您没有正确初始化适配器。您的ArrayAdapter
版本需要两个整数,一个指向行的布局文件,一个int表示该布局文件中TextView
小部件的id。此适配器将为空。你的代码应该是这样的:
String[] items = getResources().getStringArray(R.array.sorting_items);
SpinnerSortAdapter adapter = new SpinnerSortAdapter(getActivity(), android.R.layout.simple_spinner_item, items);
此外,适配器将更改为:
public class SpinnerSortAdapter extends ArrayAdapter<String> {
public SpinnerSortAdapter(Context context, int textViewResourceId,
String[] strings) {
super(context, textViewResourceId, strings);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (view instanceof TextView) {
((TextView) view).setTextSize(5);
}
return view;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
return (row);
}
}
答案 1 :(得分:2)
更简单,更快捷的方法是自定义传递给适配器的布局而不是适配器本身:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), R.layout.spinner_item, R.array.sorting_items);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
将此保存为spinner_dropdown_item.xml
中的res/layout
:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee"
android:textSize="15sp"/>
(我刚刚复制了simple_spinner_dropdown_item.xml
并在底部添加了textSize属性。您应该对simple_spinner_item
布局执行相同操作。)
这种方法更快,因为您没有在运行时更改任何属性。 XML已预处理。每次拨打getView()
或getDropDownView()
时,自定义适配器都会更改字体和大小......