2013-08-19 4 views
0

나는 스피너를 설정했고 대화 상자에 spinnerMode가 설정되어 있습니다. 내 프로그램에서 어디에서나 맞춤 글꼴을 사용하고 있으며 맞춤 글꼴을 사용하도록 회 전자의 프롬프트를 설정하는 방법을 알고 싶습니다. 나는 이것을하는 법을 사방에 쳐다 보았고 아직 그것을 찾으려고하지 않았다.Android setPrompt 맞춤 글꼴

지금까지 회 전자를 설치 한 방법은 다음과 같습니다.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       R.layout.my_spinner_style, items) { 

       public View getView(int position, View convertView, ViewGroup parent) { 
        View v = super.getView(position, convertView, parent); 
        Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Exo-Bold.otf"); 
        ((TextView) v).setTypeface(tf); 
        return v; 
       } 

       public View getDropDownView(int position, View convertView, ViewGroup parent) { 
        View v = super.getDropDownView(position, convertView, parent); 
        Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Exo-Bold.otf"); 
        ((TextView)v).setTypeface(tf); 
        //v.setBackgroundColor(Color.GREEN); 

        return v; 
       } 
     }; 

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


     gasChoice.setPrompt("Trip Type"); 
     gasChoice.setAdapter(adapter); 

답변

0

당신은 같은 스피너 스타일을 할 수 있습니다 :

한 가지 방법 :

package com.example.spinner; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.graphics.Typeface; 
import android.util.AttributeSet; 
import android.view.HapticFeedbackConstants; 
import android.view.View; 
import android.view.accessibility.AccessibilityEvent; 
import android.widget.ListAdapter; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class SpinnerPlus extends Spinner implements DialogInterface.OnClickListener{ 


    private ListAdapter mPromptAdapter; 
    private AlertDialog mPromptDialog; 
    private OnLongClickListener mOnLongClickListener; 
    public SpinnerPlus(Context context, AttributeSet attrs, int defStyle, 
      int mode) { 
     super(context, attrs, defStyle, mode); 
     // TODO Auto-generated constructor stub 
    } 

    public SpinnerPlus(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

    public SpinnerPlus(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 



    public SpinnerPlus(Context context, int mode) { 
     super(context, mode); 
     // TODO Auto-generated constructor stub 
    } 

    public SpinnerPlus(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    public void setPromptAdapter(ListAdapter adapter){ 
     mPromptAdapter = adapter; 
    } 
    @Override 
    public void setPrompt(CharSequence prompt) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
     TextView titleView = new TextView(getContext()); 
     setTypeFace(titleView); 
     builder.setCustomTitle(titleView); 
     builder.setSingleChoiceItems(mPromptAdapter, getSelectedItemPosition(), this); 
     mPromptDialog = builder.create(); 

    } 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     super.setSelection(which); 
     mPromptDialog.dismiss(); 
     mPromptDialog = null; 

    } 

    @Override 
    public boolean performClick() { 
     if(!performClick1()){ 
      mPromptDialog.show(); 
      return true; 
     } 
     return false; 
    } 
    @Override 
    public void setOnItemClickListener(OnItemClickListener l) { 
     super.setOnItemClickListener(l); 
    } 

    @Override 
    public void setOnLongClickListener(OnLongClickListener l) { 
     mOnLongClickListener = l; 
     super.setOnLongClickListener(l); 
    } 

    private void setTypeFace(TextView t){ 
     Typeface tf = Typeface.createFromAsset(t.getContext().getAssets(), "fonts/Exo-Bold.otf"); 
     t.setTypeface(tf); 
    } 
    private boolean performClick1(){ 
       sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED); 

       boolean handled = false; 
       if (mOnLongClickListener != null) { 
        handled = mOnLongClickListener.onLongClick(this); 
       } 
       if (!handled) { 
        handled = showContextMenu(); 
       } 
       if (handled) { 
        performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); 
       } 
       return handled; 
    } 

} 

가 필요한 지정

<style name="DropDown" parent="android:style/Widget.Holo.Light.Spinner.DropDown.ActionBar"> 
    <item name="android:typeface">"myTypeFace"</item> <--- but there is no way to reference the custom typeface 
</style> 

두 번째 접근 방식 (즉 작동하지 않습니다) 글꼴 :

건배,