2012-12-20 4 views
3

내 앱에서 다른 글꼴 스타일이 포함 된 회 전자를 표시하고 있습니다. 폰트 명이 US DNealian보다 같은 서체로 표시되어야합니다. view.setTypeface (tf)에 의해 특정 뷰의 서체를 설정하는 방법을 알고 있지만 ArrayList를 채우기 위해 arr_fonts 배열을 사용하고 있으며 ArrayList가 회 전자의 어댑터를 채 웁니다. 아래는 내가 사용하고있는 코드입니다.다른 서체가있는 데이터 항목이있는 Spinner 표시

는 -

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를 채우기> String 배열 -> 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

시도 :

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

을 (에 getAssets(), ARRLIST_FONTS. get (position)); .ttf 파일에 서체를 설정해야하는 곳은 어디입니까? 제공 한 코드는 해당 항목의 서체를 변경하지 않습니다. – nidhi

+0

@nidhi :이 줄에 문제가 있음을 의미합니까? –

+0

@nidhi : assest 폴더 나 다른 곳에 글꼴이 있습니까? –

1

먼저, 고해상도의 새로운 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.createFromAsset에서

Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/myfont.ttf"); 
관련 문제