Java android微调器更改字体字体

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19150588/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 14:31:27  来源:igfitidea点击:

android spinner change font typeface

javaandroid

提问by nick

i'm going to change text typeface to arialbold in my spinner how i'm going to do so. Below is my code :-

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

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


genderAdap.setDropDownViewResource(R.layout.spinner_item);

ddlGender.setAdapter(genderAdap);

采纳答案by KOTIOS

Class :

班级 :

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;

    }
}

Layout :

布局 :

<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

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

TTF文件

回答by Sanket Shah

For changing the font of spinner items, you have to use custom spinner

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

try as to set custom Typeface for all TextView's in spinner :

尝试为 spinner 中的所有 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;
     }

回答by Ethel Beauchamp

You would apply the font through your own custom SpinnerAdapter, in getView() and getDropDownView()

您将通过您自己的自定义 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;
        }

回答by Ethel Beauchamp

Here is how you can do it, set your adapter as below:

这是您的操作方法,如下所示设置您的适配器:

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

and the typeface method I have taken statically inside StaticUtils class that I created is

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

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

回答by Haresh Chhelana

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