2

カスタム フォントの例と小さなリスト ビューのサンプル アプリの両方があります。しかし、私は彼らに参加できません!!!

 /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView tv = (TextView)findViewById(R.id.tv);
    Typeface cFont = Typeface.createFromAsset(getAssets(), "fonts/jcc.ttf");
    tv.setTypeface(cFont);




<TextView  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello"
android:textSize="18sp"
android:id="@+id/tv"
/>

    /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_product_list);

    String asim02 = System.getProperty("line.separator");

    String products[] = {
            "Apple" + asim02 +"Definition1", 
            "Orange" + asim02 +"Definition2",
            "Banana"+ asim02 +"Definition3", 
            "Onion"+ asim02 +"Definition4",  };

    lv = (ListView) findViewById(R.id.list_view);

    // Adding items to listview
    adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.p_list,   products);
    lv.setAdapter(adapter);



<TextView

        android:textColor="?android:textColorPrimary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:id="@+id/p_list"
        />

カスタムフォントを使用するようにアダプターをカスタマイズするのを手伝ってください

ProductList アプリの画像https://dl.dropbox.com/u/15065300/ProductList.png

2 つのアプリの例を次に示します http://www.mediafire.com/?scb3hjplb15yly5

4

4 に答える 4

7

CustomTextView.class を作成してこれを行います

これは私のものlist_item_layout.xmlです:

<LinearLayout
    [...]

    android:orientation="vertical">
        <com.example.CustomTextView
             android:layout_width="fill_parent"
             [...]
             android:id="@+id/myCustomTextView"/>

</LinearLayout>

注意: CustomTextView.class を指定する必要があります。そうしないと、例外が発生します。

これは CustomTextView.class です

public class CustomTextView extends TextView {

    public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomTextView(Context context) {
        super(context);
        init();
    }

    public void init() {
        Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/yourfont.ttf");
        setTypeface(tf);
    }

}

EditTextこれを、などに適用できますTextViewButtons

于 2012-12-02T03:46:15.130 に答える
4

@FoamyGuy の応答から離れて、私はあなたの mediafire ファイルの応答を見ましたが、変更されたarrayAdapterクラスを完全に作成していませんでした。私はこれらのファイル共有サイトのアカウントを正確に持っているわけではないので、次のようにすればうまくいくはずです:

アクティビティで、リストビュー コードに追加する項目をProductList次のように置き換えます。

    // Adding items to listview
    Typeface cFont = Typeface.createFromAsset(getAssets(), "fonts/jcc.ttf");
    adapter = new CustomArrayAdapter(this, R.layout.list_item, R.id.p_list, products, cFont);

次に、カスタム クラスも挿入する必要があります。

public class CustomArrayAdapter extends ArrayAdapter <String> {

    private Typeface tf;
    private LayoutInflater inflater;
    private int resource;
    private int textViewResourceId;
    private String[] objects;

    public CustomArrayAdapter(Context context, int resource, int textViewResourceId,
            String[] objects, Typeface tf) {
        super(context, resource, textViewResourceId, objects);
        this.tf = tf;
        this.resource = resource;
        this.textViewResourceId = textViewResourceId;
        this.objects = objects;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = inflater.inflate(resource, parent, false);    
        }

        TextView text = (TextView) convertView.findViewById(textViewResourceId);
        text.setTypeface(tf);
        text.setText(objects[position]);
        return convertView;
    }
}

同じ間違いをしないようにソース フォルダ全体を表示する必要がある場合は、メール アドレスをお知らせください。お送りします。

于 2012-12-02T06:00:24.840 に答える
1

1 つの方法は、ArrayAdapter を拡張して書体を設定することです。

次に例を示します。

public class FontArrayAdapter extends ArrayAdapter<String>{
    private Typeface mFont;
    FontArrayAdapter(Context context, int textViewResourceId, Typeface font){
        mFont = font;
        super(context, textViewResourceId);
    }

    @Override
    public View getView(int pos, View convertView, ViewGoup parent){
        TextView tv;
        tv = (TextView) convertView;
        if(null == tv) {
            tv = new TextView(parent.getContext());
            tv.setTypeface(mFont);
        }

        tv.setText(getItem(pos));
    }
}
于 2012-12-02T03:46:51.393 に答える
1

ArrayAdapter でこれを試してください。getAssets() にコンテキストを追加 --> context.getAssets() フォント ファイルを assets フォルダーに保存します。

public class ArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final ArrayList<String> values2;
    Typeface font;


public ArrayAdapter(Context context, ArrayList<String> values,ArrayList<String> values2) {
        super(context, R.layout.listview, values);
        this.context = context;
        this.values2 = values2;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.main, parent, false);
    font = Typeface.createFromAsset(context.getAssets(), "arial.ttf");  

    TextView textView = (TextView) rowView.findViewById(R.id.label2);
    textView.setTypeface(font);
}
return rowView;
}
}
于 2012-12-24T04:49:21.677 に答える