2013-10-03 5 views
3

Я собираюсь изменить текстовый шрифт на arialbold в моем spinner, как я собираюсь это сделать. Ниже мой код: -android spinner изменить шрифт шрифт

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


genderAdap.setDropDownViewResource(R.layout.spinner_item); 

ddlGender.setAdapter(genderAdap); 

ответ

9

Класс:

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

+0

я попробовать это до сих пор не работает. После кода я добавляю 'adapter.setDropDownViewResource (R.layout.spinner_item); \t \t ddlGender.setAdapter (адаптер); ' – nick

+0

can u plz сообщите мне об ошибке? – KOTIOS

+0

нет ошибки просто счетчик пустых данных – nick

0

Для изменения шрифта элементов вертушка, вы должны использовать обычай 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; 
    } 
+0

Я не работал, может ли пользовательская база на моем примере кода? – nick

+1

@nick См. Ссылки для пользовательского адаптера для spinner http://stackoverflow.com/questions/9970675/example-of-custom-setdropdownviewresource-spinner-item http://karanbalkar.com/2013/07/tutorial- 39-create-custom-spinner-in-android/ – Andrain

0

Вы бы применили шрифт через свой собственный Spinne rAdapter, в 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; 
     } 
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; 
} 
+0

Я пытался с этими же данными не заполнять. Есть комментарии? – nick

+0

@nick Где вы храните свои данные? –

+0

в R.array.country. Я изменил mCategories на R.array.country – nick

0
// 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; 
     } 
    } 
Смежные вопросы