【问题标题】:android spinner change font typefaceandroid微调器更改字体字体
【发布时间】:2013-10-03 04:09:39
【问题描述】:

我将在我的微调器中将文本字体更改为 arialbold 我将如何这样做。下面是我的代码:-

ArrayAdapter<CharSequence> genderAdap = ArrayAdapter.createFromResource(getActivity(), R.array.gender,R.layout.spinner_item);


genderAdap.setDropDownViewResource(R.layout.spinner_item);

ddlGender.setAdapter(genderAdap);

【问题讨论】:

    标签: java android


    【解决方案1】:

    类:

    public class testActivity extends Activity {
    
        private static final String[] COUNTRIES = new String[] { "Belgium",
                "France", "Italy", "Germany", "Spain" };
        private Spinner mySpinner;
        private Typeface myFont;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.newlay);
    
            mySpinner = (Spinner) findViewById(R.id.spinner1);
            myFont = Typeface.createFromAsset(getAssets(), "gujarti.ttf");
            MyArrayAdapter ma = new MyArrayAdapter(this);
            mySpinner.setAdapter(ma);
        }
    
        private class MyArrayAdapter extends BaseAdapter {
    
            private LayoutInflater mInflater;
    
            public MyArrayAdapter(testActivity con) {
                // TODO Auto-generated constructor stub
                mInflater = LayoutInflater.from(con);
            }
    
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return COUNTRIES.length;
            }
    
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                final ListContent holder;
                View v = convertView;
                if (v == null) {
                    v = mInflater.inflate(R.layout.my_spinner_style, null);
                    holder = new ListContent();
    
                    holder.name = (TextView) v.findViewById(R.id.textView1);
    
                    v.setTag(holder);
                } else {
    
                    holder = (ListContent) v.getTag();
                }
    
                holder.name.setTypeface(myFont);
                holder.name.setText("" + COUNTRIES[position]);
    
                return v;
            }
    
        }
    
        static class ListContent {
    
            TextView name;
    
        }
    }
    

    布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
       android:layout_width="fill_parent"  
       android:layout_height="fill_parent"  
       android:orientation="vertical" >  
       <Spinner  
         android:id="@+id/spinner1"  
         android:layout_width="match_parent"  
         android:layout_height="wrap_content" />  
     </LinearLayout> 
    

    my_spinner_style.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
       android:layout_width="fill_parent"  
       android:layout_height="fill_parent" >  
       <TextView  
         android:id="@+id/textView1"  
         android:layout_width="match_parent"  
         android:layout_height="wrap_content"  
         android:text="Large Text"  
         android:textAppearance="?android:attr/textAppearanceLarge" />  
     </LinearLayout> 
    

    TTF FILES

    【讨论】:

    • 我试试这个还是不行。在代码之后我添加adapter.setDropDownViewResource(R.layout.spinner_item); ddlGender.setAdapter(adapter);
    • 你的意思是数据没有填充?
    【解决方案2】:

    你可以这样做,如下设置你的适配器:

    mMsgAdap =new ArrayAdapter<CharSequence>(getApplicationContext(), R.layout.spinner_item_list, mCategories)
                    {
    
                        public View getView(int position, View convertView, ViewGroup parent) 
                            {
                                View v = super.getView(position, convertView, parent);
                                ((TextView) v).setTypeface(StaticUtils.sTypeFace(getApplicationContext()));//Typeface for normal view
    
                                return v;
                            }
                        public View getDropDownView(int position, View convertView, ViewGroup parent) 
                            {
                                View v = super.getDropDownView(position, convertView, parent);
                                ((TextView) v).setTypeface(StaticUtils.sTypeFace(getApplicationContext()));//Typeface for dropdown view
                                ((TextView) v).setBackgroundColor(Color.parseColor("#BBfef3da"));
                                return v;
                            }
                    };
            mMsgAdap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            mMsgSpnr.setAdapter(mMsgAdap);
            mMsgSpnr.setSelection(0);
    

    我在我创建的 StaticUtils 类中静态采用的字体方法是

    public static Typeface sTypeFace(Context mCnxt) {
        Typeface mtypeface = Typeface.createFromAsset(mCnxt.getAssets(),
                "fonts/forte-mt-1361539051.ttf");
        return mtypeface;
    }
    

    【讨论】:

    • @nick 你的数据存储在哪里?
    • 在 R.array.country 中。我将 mCategories 更改为 R.array.country
    • 我建议您将数据存储在 ArrayList 中,并将其放入 ArrayList 的对象而不是 mCategories。这肯定会奏效。但是,我将不得不检查如何通过资源传递值,因为我以前没有尝试过。
    • 或者传递一个字符串数组,即String [] countryArray = {"USA", "UK", "India", "China"};
    【解决方案3】:

    要更改微调器项目的字体,您必须使用 自定义微调器

    尝试为微调器中的所有 TextView 设置自定义字体:

    Typeface typeface;
    font_name_Adapter= new ArrayAdapter<String>
                    (this,android.R.layout.simple_spinner_item,ARRLIST_FONTS)
           {
                public View getView(int position, View convertView,ViewGroup parent) {
                   View v = super.getView(position, convertView, parent);
                   ((TextView) v).setTextSize(12);
                   ((TextView) v).setTextColor(Color.WHITE);
    
                    if(position<=ARRLIST_FONTS.size()){
                     typeface = 
                      Typeface.createFromAsset(Your_Current_Activity.this.getAssets(),
                                   "fonts/yourfontname.ttf"); 
                         ((TextView) v).setTypeface(typeface);
                       }
    
                        return v;
         }
    

    【讨论】:

    【解决方案4】:

    您可以通过自己的自定义 SpinnerAdapter 在 getView() 和 getDropDownView() 中应用字体

    public View getView(int position, View convertView, ViewGroup parent) {
    
        LayoutInflater inflater = getLayoutInflater();
                View row = inflater.inflate(yourRowlayout, parent,
                        false);
           TextView make = (TextView) row.findViewById(R.id.Make);
            Typeface myTypeFace = Typeface.createFromAsset(context.getAssets(),
                    "fonts/gilsanslight.otf");
            v.setTypeface(myTypeFace);
            v.setText(itemList.get(position));
            return row;
        }
    
    
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
    
            LayoutInflater inflater = getLayoutInflater();
                    View row = inflater.inflate(yourRowlayout, parent,
                            false);
               TextView make = (TextView) row.findViewById(R.id.Make);
                Typeface myTypeFace = Typeface.createFromAsset(context.getAssets(),
                        "fonts/gilsanslight.otf");
                v.setTypeface(myTypeFace);
                v.setText(itemList.get(position));
                return row;
            }
    

    【讨论】:

      【解决方案5】:
      // try this custom adapter for spinner
      class MyCustomAdapter extends ArrayAdapter<String> {
      
              Context context;
              ArrayList<String> list;
              private int defaultPosition;
      
              public int getDefaultPosition() {
                  return defaultPosition;
              }
      
              public MyCustomAdapter(Context context, ArrayList<String> objects) {
                  super(context, 0, objects);
                  this.context = context;
                  list = objects;
              }
      
              public void setDefaultPostion(int position) {
                  this.defaultPosition = position;
              }
      
              @Override
              public View getDropDownView(int position, View convertView,
                      ViewGroup parent) {
                  return getCustomView(position, convertView, parent);
              }
      
              @Override
              public View getView(int position, View convertView, ViewGroup parent) {
                  return getCustom(position, convertView, parent);
              }
      
              public View getCustom(int position, View convertView, ViewGroup parent) {
      
                  View row = LayoutInflater.from(context).inflate(
                          android.R.layout.simple_spinner_item, parent, false);
                  TextView label = (TextView) row.findViewById(android.R.id.text1);
                  Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/yourfontsname");
                  label.setTypeface(tf);
                  label.setText(list.get(position));
      
                  return row;
              }
      
              public View getCustomView(int position, View convertView,
                      ViewGroup parent) {
      
                  View row = LayoutInflater.from(context).inflate(
                          android.R.layout.simple_spinner_item, parent, false);
                  TextView label = (TextView) row.findViewById(android.R.id.text1);
                  Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/yourfontname");
                  label.setTypeface(tf);
                  label.setText(list.get(position));
      
                  return row;
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        相关资源
        最近更新 更多