8

Andriod RSS リーダー アプリを開発しました。カスタム リストビューを使用して、RSS タイトルとその画像を一覧表示しました。RSS タイトルのフォントを変更したいと考えています。タイトル テキストビューに書体を設定するにはどうすればよいですか?

これは、タイトル Textview を設定するアダプタ クラスです。

アダプタ.java

public class InternationalAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public InternationalAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)


            vi = inflater.inflate(R.layout.list_row, null);




        TextView title = (TextView)vi.findViewById(R.id.title); // For this Textview I want to set Typeface.
        TextView date = (TextView)vi.findViewById(R.id.artist);

        ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image);

        HashMap<String, String> news = new HashMap<String, String>();
        news = data.get(position);

        // Setting all values in listview
        title.setText(International.Title[position]);
        date.setText(International.Date[position]);
        imageLoader.DisplayImage(International.image[position], thumb_image);
        return vi;
    }
}
4

7 に答える 7

7

あなたはこれを使うことができます、

        public class InternationalAdapter extends BaseAdapter {

            private Activity activity;
            private ArrayList<HashMap<String, String>> data;
            private static LayoutInflater inflater=null;
            public ImageLoader imageLoader; 

            public InternationalAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
                activity = a;
                data=d;
                inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                imageLoader=new ImageLoader(activity.getApplicationContext());
            }

            public int getCount() {
                return data.size();
            }

            public Object getItem(int position) {
                return position;
            }

            public long getItemId(int position) {
                return position;
            }

            public View getView(int position, View convertView, ViewGroup parent) {
                View vi=convertView;
                if(convertView==null)


                    vi = inflater.inflate(R.layout.list_row, null);




                TextView title = (TextView)vi.findViewById(R.id.title); // For this Textview I want to set Typeface.
                TextView date = (TextView)vi.findViewById(R.id.artist);
//Added Here
        Typeface font = Typeface.createFromAsset(
        activity.getAssets(), 
        "fonts/androidnation.ttf");
    title .setTypeface(font);

                ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image);

                HashMap<String, String> news = new HashMap<String, String>();
                news = data.get(position);

                // Setting all values in listview
                title.setText(International.Title[position]);
                date.setText(International.Date[position]);
                imageLoader.DisplayImage(International.image[position], thumb_image);
                return vi;
            }
        }
于 2012-05-19T05:34:52.973 に答える
3

このようにしてみてください

Typeface font = Typeface.createFromAsset(
    getContext().getAssets(), 
    "fonts/androidnation.ttf");
title .setTypeface(font);
于 2012-05-19T05:37:21.583 に答える
2

ソース: https://segunfamisa.com/posts/custom-fonts-with-android-support-library

以下のような書体を設定するとうまくいかないことがよくあります ( Android ランタイム例外のフォント アセットが見つかりません)

Typeface font = Typeface.createFromAsset(activity.getAssets(), "fonts/montserrat_regular.ttf");

次のようなエラーが発生する可能性があります。

java.lang.RuntimeException: Font asset not found fonts/montserrat_regular.ttf

したがって、ここで指定されている新しい方法を使用できます

手順:

1.プロジェクトのリソースフォルダーにフォルダーを作成し、res/fontそこにフォントを貼り付けます

または、フォントファミリーを作成することもできます

フォント ファミリーは Android で導入されたもので、フォントのグループとそれに対応するスタイルを定義するために使用されます。したがって、システムは、標準、太字、斜体のスタイルと太さの構成に使用するフォント リソースを決定できます。典型的なフォント ファミリーは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

<!-- regular -->
<font
    android:font="@font/josefinslab_regular"
    android:fontStyle="normal"
    android:fontWeight="400"

    app:font="@font/josefinslab_regular"
    app:fontStyle="normal"
    app:fontWeight="400" />

<!-- italic -->
<font
    android:font="@font/josefinslab_italic"
    android:fontStyle="italic"
    android:fontWeight="400"

    app:font="@font/josefinslab_italic"
    app:fontStyle="italic"
    app:fontWeight="400" />

</font-family>

ノート

注意すべき非常に重要なことは、Android とアプリの名前空間の両方を使用して属性を定義する必要があるということです。アプリの名前空間は、機能の下位互換性を保証するものです。

2. プログラムによるフォントの使用

Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
myTextView.setTypeface(typeface);

ソース: https://segunfamisa.com/posts/custom-fonts-with-android-support-library

お役に立てれば :)

于 2019-04-21T20:55:23.690 に答える
1
EditText edittext =(EditText) findViewById(R.id.ed);
String path="F:\\MTCORSVA.TTF";
Typeface tf=Typeface.createFromFile(path);
edittext.setTypeface(tf);

あなたはこれを使うことができます:)

于 2012-05-19T05:26:44.270 に答える
0

以下に示すようにカスタムテキストビューを使用し、そこにフォントを設定します

 public class MyTextView extends TextView{

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

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

    public MyTextView(Context context) {
        super(context);
        init();
        rotate();
    }

    private void rotate() {
        // TODO Auto-generated method stub
        setSelected(true);
    }

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/TrajanPro-Regular.otf");
            setTypeface(tf);
        }
    }


   }

そしてあなたのリストビュー行xmlはlist_row レイアウトでテキストビューを追加することを意味します

   <YourpackageName.MyTextView
    android:layout_marginTop="10dip" android:id="@+id/title"
    android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textSize="22px"
        android:textColor="#34A4c5"
        android:ellipsize="marquee"
        android:maxWidth="220dp" 
        android:fadingEdge="horizontal"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"  
        android:singleLine="true"
        android:layout_marginLeft="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_marginRight="10dp"></YourpackageName.MyTextView>

ここでは、より多くのプロパティが使用されています。不要なものを削除し、getviewメソッドで次のように定義できます。

      MyTextView title = (MyTextView)vi.findViewById(R.id.title); 
于 2012-05-19T05:47:09.130 に答える