2012-12-20 74 views
3

在我的應用程序中,我顯示一個包含不同字體樣式的微調器,例如如果字體名稱是US DNealian,則它應該以相同的字體顯示。我知道如何通過view.setTypeface(tf)設置特定視圖的字體,但我使用數組arr_fonts來填充ArrayList,並且該ArrayList將填充微調器的適配器。以下是我正在使用的代碼片段。用不同字體的數據項顯示微調器

- >字符串數組用於填充的ArrayList

private String arr_fonts[] = {"US: D'Nealian", "US: D'Nealian Cursive", "US: Zaner-Bloser", "US: Zaner-Bloser Cursive", 
      "Aus: NSW/ACT", "Aus: NSW/ACT Cursive", "Aus: Qld Beginners", "Aus: Qld Cursive", "Aus: SA Beginners", "Aus: SA Cursive", 
      "Aus: Tas Beginners", "Aus: Tas Cursive", "Aus: Vic/NT/WA", "Aus: Vic/NT/WA Cursive", "WA Sassoon", "WA Sassoon Infant", 
      "NZ Beginners","UK Beginners", "UK Cursive", "Century Gothic (HWT)"}; 

- >的ArrayList用於填充適配器

ARRLIST_FONTS = new ArrayList<String>(Arrays.asList(arr_fonts)); 

私人無效set_font_name_Adapter(){

sp_fonts = (Spinner)findViewById(R.id.spFont); 

    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); 
        return v; 
      } 

};

 font_name_Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     sp_fonts.setAdapter(font_name_Adapter); 

     sp_fonts.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 

       font = ARRLIST_FONTS.get(arg2); 

       } 


       System.out.println("Selected item is ................."+font); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 


      } 
     }); 

} 

我有.ttf所有的字體名稱。但我不知道如何單獨更改微調器中每個項目的字體。

任何人都可以提出任何事情或任何鏈接或相同的好教程。

謝謝。

enter image description here

回答

2

嘗試以設置在旋轉所有的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

在Typeface.createFromAsset(getAssets(), ARRLIST_FONTS。得到(位置));我應該在哪裏給.ttf文件設置字體?您提供的代碼不會更改該項目的字體。 – nidhi

+0

@nidhi:意味着你在這一行有任何問題? –

+0

@nidhi:你在擁有文件夾或任何其他地方使用字體? –

1

首先,在您的RES一個新的XML文件/被叫佈局目錄 「my_spinner_style.xml」,並把在類似如下的內容:

android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:textSize="9pt" 
android:singleLine="True" 
android:id="@+id/spinnerTarget" 
android:textColor="#000000" 
android:gravity="center"/> 

然後在你的代碼中,使用這樣的:

Spinner mySpinner = (Spinner) findViewById(R.id.my_spinner); 
mySpinnerArrayAdapter = new MyCustomArrayAdapter(this, R.layout.my_spinner_style); mySpinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

通常你會創建第二行一個新的ArrayAdapter,但在這種情況下,你需要創建一個自定義的ArrayAdapter並覆蓋從我們的定製微調風格得到TextView的方法。

所以,你需要把代碼爲您定製ArrayAdapter,像這樣: 私有類MyArrayAdapter擴展ArrayAdapter {

公共MyArrayAdapter(上下文的背景下,INT textViewResourceId){ 超(背景下,textViewResourceId); }

public TextView getView(int position, View convertView, ViewGroup parent) { 
TextView v = (TextView) super.getView(position, convertView, parent); 
v.setTypeface(myFont); 
return v; 
} 

public TextView getDropDownView(int position, View convertView, ViewGroup parent) { 
TextView v = (TextView) super.getView(position, convertView, parent); 
v.setTypeface(myFont); 
return v; 
} 

} 

要使用需要駐留在資產/ fonts目錄,並且您可以訪問它像這樣的字體:

Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/myfont.ttf"); 
相關問題