Nano Hash - криптовалюты, майнинг, программирование

Как установить шрифт в Android?

Я разработал приложение для чтения RSS Andriod. Я использовал настраиваемое представление списка для отображения заголовков RSS и его изображений. Теперь я хочу изменить шрифт заголовков RSS. Как я могу установить шрифт в текстовое представление заголовка?

Вот мой класс адаптера, в котором я устанавливаю заголовок Textview.

Adapter.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;
    }
}
19.05.2012

  • Этот вопрос был задан 100 раз на SO. Почему вы их не направили? 19.05.2012
  • Я знаю, как это сделать в Activity, но это другое. 19.05.2012
  • Вы не можете сделать это на занятии. Вы можете делать это только на просмотрах. 19.05.2012
  • возможный дубликат Использование пользовательского шрифта в Android 22.05.2012

Ответы:


1

Вы можете использовать это,

        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;
            }
        }
19.05.2012
  • Я использовал этот метод, но в eclipse возникла ошибка. Метод getContext () не определен для типа InternationalAdpater .. 19.05.2012
  • вместо getContext () попробуйте с активностью 19.05.2012
  • С наилучшими пожеланиями ... :) Удачного кодирования .. :) 19.05.2012

  • 2

    Попробуйте вот так

    Typeface font = Typeface.createFromAsset(
        getContext().getAssets(), 
        "fonts/androidnation.ttf");
    title .setTypeface(font);
    
    19.05.2012

    3
    EditText edittext =(EditText) findViewById(R.id.ed);
    String path="F:\\MTCORSVA.TTF";
    Typeface tf=Typeface.createFromFile(path);
    edittext.setTypeface(tf);
    

    вы можете использовать это :)

    19.05.2012

    4

    Источник: https://segunfamisa.com/posts/custom-fonts-with-android-support-library

    Установка шрифта, подобного приведенному ниже, часто не работает (​​Ассортимент шрифта Android Runtime Exception не найден)

    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

    Надеюсь это поможет :)

    21.04.2019

    5

    используйте custom textview, как указано ниже, и установите там шрифт

     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); 
    
    19.05.2012

    6

    Вы можете использовать эту библиотеку для изменения шрифта в любом представлении, нужно только передать имя файла шрифта с привязкой xml-кода. https://github.com/ChathuraHettiarachchi/TypeFaced

    1. текстовый просмотр

    2. редактировать текст

    3. переключатель

    4. переключатель

    5. кнопка

    6. радиокнопка

    7. флажок

    <com.chootdev.typefaced.TypeFacedTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:textView_font="YOUR_FONT_NAME.ttf/>
    
    06.02.2017

    7

    Мы также можем использовать этот метод:

    t.setTypeface(Typeface.MONOSPACE,Typeface.BOLD);
    

    Здесь моноширинный шрифт - это шрифт.

    20.07.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..