在android中以编程方式将文本大小设置为spinner中的文本

时间:2011-02-14 07:40:14

标签: android spinner

您好我想以编程方式(动态)设置微调器中文本的样式和大小。我不会在我的应用程序中使用任何资源。所以给我一些建议

4 个答案:

答案 0 :(得分:20)

我不认为您可以动态创建它而不会覆盖默认布局资源的行为。使用资源创建它:

创建包含TextView的布局文件,并为此定义大小,颜色和其他样式。并创建一个ArrayAdapter对象,并在适配器中提供该布局文件以及ID的{​​{1}}。

您的布局文件将如下所示: spinner_item.xml

TextView

现在您可以在代码中使用此代码:

<?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>

您也可以创建自定义ArrayAdapter并覆盖方法

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); getView()

在此方法中,您可以为getDropDownView()

设置自定义颜色,大小和字体

更新:

我通过覆盖android的默认资源动态地更改了微调器项的文本大小和颜色。我使用的片段如下:

TextView

答案 1 :(得分:5)

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;
        }
    };

答案 2 :(得分: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;
        }

}

}

答案 3 :(得分:0)

与自定义列表视图相同,我们可以将值设置为微调器。在customview类中,我们可以将属性设置为Textview