2011-01-01 11 views
4

私はリストアダプタを持っていて、holder.text.setTypeface(TYPEFACE)を使ってタイプフェースを設定していますが、それぞれのListViewボタンに割り当てられた名前の文字列があります。しかし、私はどのように個々のリスト項目をカスタムフォントに設定するのかと思っています。基本的には、3つのListAdapterボタン、ボタン1、ボタン2、ボタン3があると言います。ボタン1とボタン3は通常のままで、ボタン2はカスタムフォントにします。これはどうすればできますか?個々のListAdapterボタンにカスタムフォントを設定しようとしています

+0

リストビューの外にあるボタンのセットに従って、あなたのテキストビューのアイテムフォントをカスタマイズしたいと思っていませんでしたか?いくつかのコードを分かち合うことができますか?今、あなたはそれをどうやってやっていますか? – Necronet

答えて

9

ArrayAdapterを拡張し、getViewプロシージャでフォントを設定するクラスを作成します。

+0

またはArrayAdapter、BaseAdapter、CursorAdapter、SimpleAdapterなどの他のListAdapter ... – aymeric

+0

このメソッドでは、ボタンのIDに基づいてどのボタンが表示されているかを確認することができます。テキストを変更したい – Phil

1

私の好きな2つの方法は、XMLレイアウトで設定することです。これは、すべての "Button2"で同じカスタムフォントが必要な場合や、希望するTypefaceが既にシステムに含まれている場合に有効です。

第2の方法は、ListAdapterをViewBinderでカスタマイズすることです。 Pinassiが書いたように、getView()から行うことは可能ですが、これは簡単にデータを見ることができず、汎用UIコードとカスタムUIコードを混在させるという欠点があります。 SimpleAdapterSimpleCursorAdapterの両方は、メソッドsetViewValueViewBinderという内部クラスを持っています。各シグネチャは、管理する基礎となるデータのために異なります。

setViewValueを手動で変更するだけで、手動で制御することができます。例えばR.id.button1はシンプルなテキストバインディングで、メソッドはfalseを返し、APIはそれを処理しますが、我々はR.id.button2をカスタマイズしているのでtrueを返します。

switch(v.getId){ 
case R.id.button2: 
    TextView button2 = (TextView) v; 
    button2.setTypeface(customTypeFace); 
    // bind text here or return false to allow the API to do this for you. 
break; 
// other customization 
} 

customTypeFaceシステムTypefaceまたはプロジェクトのassets folderから来ています。 AndroidはTrueTypeフォントを使用します。

関連する問題