95

アセットフォルダにttfフォントファイルがあります。私はそれをテキストビューに使用する方法を知っています:

Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);

スピナーテキストの外観を独自のxmlファイルで定義しました(Androidでは通常どおり)。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="center" 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />

コードからこのテキストビューを参照することはできません。常にnullポインタ例外が発生します。例:私が試した:

TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);

独自のxmlで定義されたスピナーテキストに対しても外部フォントを選択することは可能ですか?

ありがとうございました。

答えで編集:

これは機能します:

String [] items = new String[2];
    items[0]="Something1";
    items[1]="Something2";

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

         public View getView(int position, View convertView, ViewGroup parent) {
                 View v = super.getView(position, convertView, parent);

                 Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
                 ((TextView) v).setTypeface(externalFont);

                 return v;
         }


         public View getDropDownView(int position,  View convertView,  ViewGroup parent) {
                  View v =super.getDropDownView(position, convertView, parent);

                 Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
                 ((TextView) v).setTypeface(externalFont);
                 v.setBackgroundColor(Color.GREEN);

                 return v;
         }
 };


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

追加する必要があるかもしれません

import android.view.ViewGroup;

ファイルの上部にあるインポートのリストへ。何らかの理由で、Eclipseは、コードに含まれるViewGroupクラスを認識しない場合、この提案を行いません。

4

7 に答える 7

24

およびSpinnerAdapterで、独自のカスタムを通じてフォントを適用します。getView()getDropDownView()

于 2011-03-30T11:10:08.543 に答える
15

アダプターを別のファイルに実装する場合、コンテキストをパラメーターとして持つため、アダプターのコンストラクターから「getAssets()」関数にアクセスできます。

public class YourItemAdapter extends ArrayAdapter<String> {
int recurso;
Typeface tf;

public YourItemAdapter(Context _context, int _resource,
        List<String> _items) {

    super(_context, _resource, _items);
    recurso=_resource;
    tf=Typeface.createFromAsset(_context.getAssets(),"font/digital-7.ttf");
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //You can use the new tf here.
    TextView spinner_text=(TextView)findViewById(R.id.text1);
    spinner_text.setTypeface(tf);
    }
}
于 2012-01-21T18:28:45.240 に答える