Привет, я хочу установить стиль и размер текста в spinner программно (динамически). Я не использую никаких ресурсов в своем приложении для этого. Дайте мне несколько предложений для этого
Установите TextSize в текст в spinner в андроиде программно
Ответ 1
то же самое, что и в пользовательском listview, мы можем установить значения в spinner. В классе customview мы можем установить свойства в Textview
Ответ 2
Я не думаю, что вы можете создать это динамически, не переопределяя поведение ресурсов макета по умолчанию. Чтобы создать его с помощью ресурсов:
Создайте файл макета, содержащий TextView
, и определите для него размер, цвета и другой стиль. Создайте объект ArrayAdapter
и укажите этот файл макета в вашем адаптере вместе с ID
TextView
.
Ваш файл макета будет выглядеть следующим образом: spinner_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textview"
android:layout_height="30dip"
android:layout_width="wrap_content"
android:textSize="20dip"
android:textColor="#ccddaa"
/>
</LinearLayout>
Теперь вы можете использовать это в своем коде следующим образом:
Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item,R.id.textview,Your_Array_of_items);
mySpinner.setAdapter(adapter);
Также вы можете создать настраиваемый ArrayAdapter и переопределить методы
getView()
или getDropDownView()
внутри этих методов вы можете установить собственный цвет, размер и шрифты для TextView
Обновление:
Я изменил размер текста и цвет элементов-счетчиков динамически, переопределив ресурсы по умолчанию для android. Используемый фрагмент приведен ниже:
public class CustomSpinner extends Activity {
String[] numbers = { "One", "Two", "Three", "Four", "Five" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
SpinnerAdapter adapter = new SpinnerAdapter(this,
android.R.layout.simple_spinner_item, numbers);
spinner.setAdapter(adapter);
}
private class SpinnerAdapter extends ArrayAdapter<String> {
Context context;
String[] items = new String[] {};
public SpinnerAdapter(final Context context,
final int textViewResourceId, final String[] objects) {
super(context, textViewResourceId, objects);
this.items = objects;
this.context = context;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(
android.R.layout.simple_spinner_item, parent, false);
}
TextView tv = (TextView) convertView
.findViewById(android.R.id.text1);
tv.setText(items[position]);
tv.setTextColor(Color.BLUE);
tv.setTextSize(30);
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(
android.R.layout.simple_spinner_item, parent, false);
}
// android.R.id.text1 is default text view in resource of the android.
// android.R.layout.simple_spinner_item is default layout in resources of android.
TextView tv = (TextView) convertView
.findViewById(android.R.id.text1);
tv.setText(items[position]);
tv.setTextColor(Color.BLUE);
tv.setTextSize(30);
return convertView;
}
}
Ответ 3
ArrayAdapter<String> ArrayAdapter_Price = new ArrayAdapter<String>(
getActivity(), R.layout.item_list_drop_down, dollers) {
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
TextView tv = ((TextView) v);
tv.setTextColor(getResources().getColor(R.color.login_text_color));
tv.setTypeface(tv.getTypeface(), Typeface.BOLD);
tv.setSingleLine();
tv.setEllipsize(TextUtils.TruncateAt.END);
tv.setTextSize(18);
return v;
}
};
Ответ 4
Я сделал 2 модификации,
1 добавлен другой конструктор, так что можно использовать ресурс 2 добавлена 2 общедоступных функции (setTextSize и getTextSize) (3-Также отключил цвет, поставив их как комментарии)
public class CustomSpinner extends Activity {
String[] numbers = { "One", "Two", "Three", "Four", "Five" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
SpinnerAdapter adapter = new SpinnerAdapter(this,
android.R.layout.simple_spinner_item, numbers);
//(you can also pass in a string array resource like this:)
/*SpinnerAdapter adapter = new SpinnerAdapter(this, R.layout.simple_spinner_item,
getResources().getStringArray(R.array.my_string_array_resource));*/
spinner.setAdapter(adapter);
}
public class SpinnerAdapter extends ArrayAdapter<String> {
Context context;
String[] items = new String[] {};
private int textSize=40; //initial default textsize (might be a bit big)
public SpinnerAdapter(final Context context, final int textViewResourceId, final String[] objects) {
super(context, textViewResourceId, objects);
this.items = objects;
this.context = context;
}
public SpinnerAdapter(final Context context, final int resource, final int textViewResourceId ){
super(context, resource, textViewResourceId);
this.items = context.getResources().getStringArray(resource);
Toast.makeText(context, String.valueOf(this.getSpinnerTextSize()), Toast.LENGTH_LONG).show();
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(
android.R.layout.simple_spinner_item, parent, false);
}
TextView tv = (TextView) convertView
.findViewById(android.R.id.text1);
tv.setText(items[position]);
//tv.setTextColor(Color.BLUE);
tv.setTextSize(textSize);
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(
android.R.layout.simple_spinner_item, parent, false);
}
// android.R.id.text1 is default text view in resource of the android.
// android.R.layout.simple_spinner_item is default layout in resources of android.
TextView tv = (TextView) convertView
.findViewById(android.R.id.text1);
tv.setText(items[position]);
//tv.setTextColor(Color.BLUE);
tv.setTextSize(textSize);
return convertView;
}
//set the textsize
public void setSpinnerTextSize(int size){
textSize= size;
}
//return the textsize
public int getSpinnerTextSize(){
return textSize;
}
}
}