【问题标题】:Set the TextSize to a text in spinner in android programatically以编程方式将文本大小设置为 android 中微调器中的文本
【发布时间】:2011-06-26 18:21:15
【问题描述】:

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

【问题讨论】:

  • 查看更新后的答案。
  • @Vikas Patidar:我想要动态的
  • 我已经使用这两种方法创建了它。但我不建议你多写几行代码。仅在没有其他选择之前使用它。
  • 嘿,如果不值得仅仅为了赚取更多积分,请不要接受你自己的答案。 vikas 的回答很棒..

标签: android spinner


【解决方案1】:

我认为您不能在不覆盖默认布局资源的行为的情况下动态创建它。使用资源创建它:

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

您的布局文件将如下所示: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的默认资源来动态更改微调器项的文本大小和颜色。我使用的sn-p如下:

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

【讨论】:

  • 这对我帮助很大!谢谢!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我做了两处修改,

    1-添加了另一个构造函数,以便可以使用资源 2新增2个公共函数(setTextSize,getTextSize) (3-还通过将它们作为 cmets 禁用颜色)

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

    【讨论】:

      【解决方案4】:
      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;
              }
          };
      

      【讨论】:

        猜你喜欢
        • 2011-10-18
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-17
        • 2012-10-10
        相关资源
        最近更新 更多