2

ArrayAdapter を通じて作成された AutocompleteTextView の提案のフォントを変更しようとしています

Wadapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line);

ファイル simple_dropdown_item_1line.xml を探して、レイアウト フォルダーに転送しました。その内容は次のとおりです。

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1"
style="?android:attr/dropDownItemStyle"
android:textAppearance="?android:attr/textAppearanceLargePopupMenu"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee" />

これにより、提案のサイズなどを簡単に変更できます。ただし、フォントの種類を xml から変更することはできません (基本的なフォント オプションを除く)。これはコードから行う必要があります。このコード行を使用しようとしました:

TextView scroll= (TextView) findViewById(android.R.id.text1);
Typeface type = Typeface.createFromAsset(getAssets(),"Typewriter.ttf");
scroll.setTypeface(type);

しかし、最後の行で NullPointerException が発生します。誰もがどのように進めるかについて考えを持っていますか?

4

2 に答える 2

1

カスタム アダプターを作成し、そこで提案に新しいフォントを割り当てることができます。

public class CustomAdapter extends ArrayAdapter<String> {

    private Context context;
    private int layout;
    private final Typeface tf;

    public AddContactAdapter(Context context, int layout, ArrayList<String> data, String FONT) {
        super(context, layout, contacts);
        this.context = context;
        this.layout = layout;
        tf = Typeface.createFromAsset(context.getAssets(), FONT);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(layout, parent, false);

        TextView suggestion = (TextView) rowView.findViewById(R.id.text1);
        suggestion.setText(getItem(position).toString());
        suggestion.setTypeface(tf);

        return rowView;
    }

そして、次のようにカスタム アダプターをアクティビティに割り当てます。

CustomAdapter adapter = new CustomAdapter(this, android.R.layout.simple_dropdown_item_1line, data, "path to font");
于 2014-03-01T20:11:38.723 に答える
0

Typewriter.ttfそれがフォントの正しいファイル名であり、assetsフォルダーに追加されていることを再確認してください。

編集

TextView idに変更することもできます

android:id="@+id/text1"

でビューを取得します

TextView scroll = (TextView) findViewById(R.id.text1);
于 2013-10-05T15:06:53.297 に答える