Установите TextSize в текст в spinner в андроиде программно

Привет, я хочу установить стиль и размер текста в 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;
        }

}

}