1

カスタムの展開可能なリストビューでカスタムの書体を使用しようとしています。ただし、これを実行しようとすると、最初は、Viewpager フラグメント (使用している) が読み込まれるときに、ExpandableListView のテキストと書体が表示されません。

展開可能なリストビューで空白のテキストをクリックすると、テキストとフォントが表示されます。この問題は、カスタム書体でのみ発生するようです。テキストビューの色などを変更するなど、他のカスタム機能を使用すると、うまく機能します。親切に助けて

詳細については、添付の画像を参照してください。 1 2

カスタム展開可能なリストアダプターのコードの関連部分:

public class MyExpandableListAdapter extends SimpleExpandableListAdapter {

    View cntView;
    LayoutInflater inflater;
    Context cxt;
    TextView tvGrp, tvChild;

    public MyExpandableListAdapter(Context context,
            List<? extends Map<String, ?>> groupData, int groupLayout,
            String[] groupFrom, int[] groupTo,
            List<? extends List<? extends Map<String, ?>>> childData,
            int childLayout, String[] childFrom, int[] childTo) {
        super(context, groupData, groupLayout, groupFrom, groupTo, childData,
                childLayout, childFrom, childTo);
        cxt=context;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {

        super.getGroupView(groupPosition, isExpanded, convertView, parent);
        View tmp;


        if (convertView == null) {  // if it's not recycled, initialize some attributes
            tmp=new View(cxt);
            inflater=(LayoutInflater)cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            tmp=inflater.inflate(R.layout.explistgroup, null);
        }else{
            tmp = (View)convertView;
        }

        tvGrp=(TextView) tmp.findViewById(R.id.rowTextView);
        tvGrp.setTypeface(FontLoader.loadTypeface(cxt,R.raw.roboto_regular));  // This does not work. It shows a blank textview initially. Only after I click it, the typeface and the text come into effect
        //tvGrp.setText("ambit"); -- This works well

        return tmp;

    }
4

3 に答える 3

0

OKここであなたがする必要があることです:

public static Typeface typeFace;

2-同じアクティビティで言及されているナタリのように、次のように初期化します。

tf = Typeface.createFromAsset(getAssets(), "<your font name>.ttf");

3-ナタリ氏の指示に従って、カスタムアダプターで次を使用しますが、わずかな変更があります

tvGrp.setTypeface(MainListActivity.typeFace);

問題が解決しない場合は、カスタム アダプター クラスを次のように拡張してみてください。BaseExpandableListAdapter

于 2013-08-04T16:32:35.700 に答える
0

ビューにテキストを設定するのではなく、ビューを作成するだけです。textxmlにはありますか?この方法は次のようにする必要があると思います。

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {

    ViewGroup tmp = (ViewGroup)super.getGroupView(groupPosition, isExpanded, convertView, parent);
    tvGrp=(TextView) tmp.findViewById(R.id.rowTextView);
    tvGrp.setTypeface(FontLoader.loadTypeface(cxt,R.raw.roboto_regular));  // This does not work. It shows a blank textview initially. Only after I click it, the typeface and the text come into effect
    //tvGrp.setText("ambit"); -- This works well

    return tmp;

}

または、スーパーを呼び出す代わりに、作成して初期化します。

そして、これは適切に機能するはずです。

于 2013-08-04T16:45:15.833 に答える
0

次の例のように、アセットからカスタム フォントを読み込んでみてください。

Typeface tf = Typeface.createFromAsset(getAssets(), "<your font name>.ttf");
tvGrp.setTypeface(tf);
于 2013-01-25T15:09:54.157 に答える