অ্যান্ড্রয়েডে টেক্সটভিউয়ের ফন্টফ্যামিলি কীভাবে পরিবর্তন করবেন


739

সুতরাং আমি android:fontFamilyএন্ড্রয়েড এ পরিবর্তন করতে চাই তবে অ্যান্ড্রয়েডে আমি কোনও পূর্বনির্ধারিত ফন্ট দেখতে পাচ্ছি না। আমি কীভাবে পূর্বনির্ধারিতগুলির মধ্যে একটি নির্বাচন করব? আমার নিজের টাইপফিসের সংজ্ঞা দেওয়ার দরকার নেই তবে আমার এখন যা দরকার তা এটি এখনকার চেয়ে আলাদা কিছু।

<TextView
    android:id="@+id/HeaderText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="52dp"
    android:gravity="center"
    android:text="CallerBlocker"
    android:textSize="40dp"
    android:fontFamily="Arial"
 />

মনে হচ্ছে আমি সেখানে যা করেছি তা সত্যিই কাজ করবে না! বিটিডাব্লু android:fontFamily="Arial"ছিল বোকা চেষ্টা!


এই লিঙ্কে খুঁজে বার করো stackoverflow.com/questions/2376250/...
duggu

উত্তর:


1660

Android 4.1 / 4.2 / 5.0 থেকে, নিম্নলিখিত রোবোটো ফন্ট পরিবারগুলি উপলভ্য:

android:fontFamily="sans-serif"           // roboto regular
android:fontFamily="sans-serif-light"     // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
android:fontFamily="sans-serif-black"     // roboto black
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)

এখানে চিত্র বর্ণনা লিখুন

আমি তাল মিলাতে চেষ্টা করছি

android:textStyle="normal|bold|italic"

এই 16 রূপগুলি সম্ভব:

  • রোবোটো নিয়মিত
  • রোবোটো ইটালিক
  • রোবোটো সাহসী
  • রোবোটো বোল্ড ইটালিক
  • তে Roboto-হাল্কা
  • রোবোটো-লাইট ইটালিক
  • তে Roboto পাতলা
  • রোবোটো-পাতলা ইটালিক
  • তে Roboto-কনডেন্সড
  • রোবোটো-কনডেন্সড ইটালিক
  • রোবোটো-কনডেন্সড গা bold়
  • রোবোটো-কনডেন্সড বোল্ড ইটালিক
  • তে Roboto-কালো
  • রোবোটো-ব্ল্যাক ইটালিক
  • তে Roboto-মাঝারি
  • রোবোটো-মিডিয়াম ইটালিক

fonts.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="font_family_light">sans-serif-light</string>
    <string name="font_family_medium">sans-serif-medium</string>
    <string name="font_family_regular">sans-serif</string>
    <string name="font_family_condensed">sans-serif-condensed</string>
    <string name="font_family_black">sans-serif-black</string>
    <string name="font_family_thin">sans-serif-thin</string>
</resources>

17
এটিকে ভুলে যাবেন না: অ্যান্ড্রয়েড: ফন্টফ্যামিলি = "সংস-সেরিফ-পাতলা" // রোবোটো পাতলা
স্যাম লু

6
আমি রোবোটোর নমুনা বইটিতে "কালো ছোট ক্যাপস" নামে একটি বৈকল্পিক দেখেছি , তবে আমি এটি ব্যবহার করতে পরিচালনা করি না। ব্যবহার android:fontFamily="sans-serif-black-small-caps"স্বল্পতা হবে। কেউ কি জানেন?
tbruyelle

3
আপনি এখানে টাইপ করেছেন এমন এই ফন্ট-পরিবারের কোনওটিই আমি খুঁজে পাচ্ছি না i আমি একসাথে "সানস-সেরিফ" খুঁজে পাচ্ছি না।
সোমটি

9
এটি একটি দুর্দান্ত তালিকা। এই তথ্যটি কোথা থেকে এসেছে কারও সাথে কি কোনও লিঙ্ক আছে? android:fontFamilyটেক্সটভিউয়ের ডকুমেন্টেশনের জন্য বলুন গুগল যদি তাদের ডকুমেন্টেশনে এটি সহজে খুঁজে পাওয়ার জায়গা করে থাকে তবে এটি দুর্দান্ত হবে ।
ক্রিস্টোফার পেরি


207

প্রোগ্রামটিমেটিকভাবে হরফ সেট করার উপায়:

TextView tv = (TextView) findViewById(R.id.appname);
Typeface face = Typeface.createFromAsset(getAssets(),
            "fonts/epimodem.ttf");
tv.setTypeface(face);

আপনার সম্পদ ফোল্ডারে ফন্ট ফাইলটি রাখুন। আমার ক্ষেত্রে আমি ফন্টস নামে একটি উপ-ডিরেক্টরি তৈরি করেছি।

সম্পাদনা: আপনি যদি জিজ্ঞাসা করেন যে আপনার সম্পত্তির ফোল্ডারটি কোথায় রয়েছে তবে এই প্রশ্নটি দেখুন


34
এটি যখন কাজ করে তবে দয়া করে মনে রাখবেন এটি মেমরি ফাঁস তৈরি করতে পারেএই উত্তরটি ব্যবহার করে এটি স্থির করা যেতে পারে ।
চার্লস মাদেরে

@ স্কুটারনোভা আপনার সমাধানটি ব্যবহার করার সময় আমি এই ত্রুটিটি পেয়েছি get ত্রুটি: ফন্টের সম্পদটি গথিক.টিএফ খুঁজে পাওয়া যায় নি
সাগর

কীভাবে পুরো অ্যাপ্লিকেশনটিতে এটি প্রয়োগ করবেন? এখনই উদাহরণস্বরূপ আপনি এটি কেবল পাঠ্যদর্শনগুলিতে প্রয়োগ করছেন
প্রীতিশ যোশি

176

অ্যান্ড্রয়েড-স্টুডিও 3.0 থেকে শুরু করে ফন্টের পরিবারটি পরিবর্তন করা খুব সহজ

সমর্থন লাইব্রেরি 26 ব্যবহার করে এটি অ্যান্ড্রয়েড এপিআই সংস্করণ 16 এবং ততোধিক সংস্করণে চলমান ডিভাইসগুলিতে কাজ করবে

একটি ফোল্ডার তৈরি fontঅধীনে resযা কখনও আপনি চান ফন্ট ডিরেক্টরির .Download ভিতরে এটি আটকে দিন fontফোল্ডার। কাঠামোটি নীচের মতো কিছু জিনিস হওয়া উচিত

এখানে

দ্রষ্টব্য: অ্যান্ড্রয়েড সমর্থন লাইব্রেরি ২.0.০ হিসাবে, আপনি এপিআই 26 বা তার চেয়ে কম চলমান ডিভাইসে আপনার ফন্টগুলি লোড নিশ্চিত করতে আপনার অবশ্যই উভয় বৈশিষ্ট্যের সেট (অ্যান্ড্রয়েড: এবং অ্যাপ্লিকেশন:) ঘোষণা করতে হবে।

এখন আপনি ব্যবহার করে বিন্যাসে ফন্ট পরিবর্তন করতে পারেন

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/dancing_script"
app:fontFamily="@font/dancing_script"/>

প্রোগ্রামারমেটিক্যালি পরিবর্তন করা

 Typeface typeface = getResources().getFont(R.font.myfont);
   //or to support all versions use
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
 textView.setTypeface(typeface);  

স্টাইল.এক্সএমএল ব্যবহার করে ফন্ট পরিবর্তন করতে একটি শৈলী তৈরি করুন

 <style name="Regular">
        <item name="android:fontFamily">@font/dancing_script</item>
        <item name="fontFamily">@font/dancing_script</item>
        <item name="android:textStyle">normal</item>
 </style>

এবং এই শৈলী প্রয়োগ করুন TextView

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/Regular"/>

আপনি নিজের ফন্ট পরিবার তৈরি করতে পারেন

- ফন্ট ফোল্ডারে ডান ক্লিক করুন এবং নতুন> ফন্ট রিসোর্স ফাইলে যান । নতুন রিসোর্স ফাইল উইন্ডো প্রদর্শিত হবে।

- ফাইলের নাম লিখুন এবং তারপরে ওকে ক্লিক করুন । নতুন ফন্টের রিসোর্স এক্সএমএল সম্পাদকটিতে খোলে।

উদাহরণস্বরূপ, এখানে আপনার নিজের ফন্ট পরিবার লিখুন

<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/lobster_regular" />
    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/lobster_italic" />
</font-family>

এটি হ'ল ফন্ট রিসোলে একটি নির্দিষ্ট ফন্টস্টাইল এবং ফন্টওয়াইটের ম্যাপিং যা সেই নির্দিষ্ট রূপটি রেন্ডার করতে ব্যবহৃত হবে। হরফ স্টাইলের জন্য বৈধ মানগুলি স্বাভাবিক বা তির্যক; এবং ফন্টওয়েট সিএসএস ফন্ট-ওজন স্পেসিফিকেশন অনুসারে

1. করতে পরিবর্তন মধ্যে fontfamily বিন্যাস আপনি লিখতে পারেন

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/lobster"/>

২. প্রোগ্রামগতভাবে পরিবর্তন করতে

 Typeface typeface = getResources().getFont(R.font.lobster);
   //or to support all versions use
Typeface typeface = ResourcesCompat.getFont(context, R.font.lobster);
 textView.setTypeface(typeface);  

পুরো অ্যাপের ফন্ট পরিবর্তন করতে AppTheme এ এই দুটি লাইন যুক্ত করুন

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
     <item name="android:fontFamily">@font/your_font</item>
     <item name="fontFamily">@font/your_font</item>
  </style>

আরও তথ্যের জন্য ডকুমেন্টেশন , অ্যান্ড্রয়েড কাস্টম ফন্ট টিউটোরিয়াল দেখুন


7
এনবি: এটি বর্তমানে কেবল অ্যান্ড্রয়েড স্টুডিও 3.0 পূর্বরূপে কাজ করে। এটি অ্যান্ড্রয়েড স্টুডিও ২.৩.৩ এ আমার জন্য কাজ করে নি। আশা করি কিছুটা সময় সাশ্রয় হয়!
তাশ পেমিভা

2
আপনি খালি খালি কাজ করতে পারবেন না তাই আপনি কীভাবে কোনও খণ্ডের মধ্যে থেকে ফন্টটি পেতে পারেন getResources()? সম্পাদনা : আপনার উত্তরের শেষে এই লাইনটি আমার পক্ষে কাজ করেছে:Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
প্যারাডক্স

ক্যালিগ্রাফির সাথে তুলনা করে কোনওভাবে এটি আমার ক্ষেত্রে ফন্টকে দূষিত দেখা দিয়েছে। এছাড়াও ফন্টওয়েট কিছুই করেনা
লিও ড্রয়েডকোডার

@ লিওড্রয়েডকোডার এটি কাজ করে, আপনি উভয়ই ব্যবহার করেছেন তা নিশ্চিত করুন android:fontWeightএবংapp:fontWeight
মনোহর রেড্ডি

আমি বেশ কয়েকবার চেক করেছি। কোন প্রভাব নেই।
লিও ড্রডকোডার

100

/system/etc/fonts.xmlসাম্প্রতিক একটি প্রকল্পে আমাকে পার্স করতে হয়েছিল। ললিপপ হিসাবে বর্তমান ফন্ট পরিবার এখানে:

╔════╦════════════════════════════╦═════════════════════════════╗
     FONT FAMILY                 TTF FILE                    
╠════╬════════════════════════════╬═════════════════════════════╣
  1  casual                      ComingSoon.ttf              
  2  cursive                     DancingScript-Regular.ttf   
  3  monospace                   DroidSansMono.ttf           
  4  sans-serif                  Roboto-Regular.ttf          
  5  sans-serif-black            Roboto-Black.ttf            
  6  sans-serif-condensed        RobotoCondensed-Regular.ttf 
  7  sans-serif-condensed-light  RobotoCondensed-Light.ttf   
  8  sans-serif-light            Roboto-Light.ttf            
  9  sans-serif-medium           Roboto-Medium.ttf           
 10  sans-serif-smallcaps        CarroisGothicSC-Regular.ttf 
 11  sans-serif-thin             Roboto-Thin.ttf             
 12  serif                       NotoSerif-Regular.ttf       
 13  serif-monospace             CutiveMono.ttf              
╚════╩════════════════════════════╩═════════════════════════════╝

এখানে পার্সারটি রয়েছে ( ফন্টলিস্টপার্সারের ভিত্তিতে ):

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.util.Xml;

/**
 * Helper class to get the current font families on an Android device.</p>
 * 
 * Usage:</p> {@code List<SystemFont> fonts = FontListParser.safelyGetSystemFonts();}</p>
 */
public final class FontListParser {

    private static final File FONTS_XML = new File("/system/etc/fonts.xml");

    private static final File SYSTEM_FONTS_XML = new File("/system/etc/system_fonts.xml");

    public static List<SystemFont> getSystemFonts() throws Exception {
        String fontsXml;
        if (FONTS_XML.exists()) {
            fontsXml = FONTS_XML.getAbsolutePath();
        } else if (SYSTEM_FONTS_XML.exists()) {
            fontsXml = SYSTEM_FONTS_XML.getAbsolutePath();
        } else {
            throw new RuntimeException("fonts.xml does not exist on this system");
        }
        Config parser = parse(new FileInputStream(fontsXml));
        List<SystemFont> fonts = new ArrayList<>();

        for (Family family : parser.families) {
            if (family.name != null) {
                Font font = null;
                for (Font f : family.fonts) {
                    font = f;
                    if (f.weight == 400) {
                        break;
                    }
                }
                SystemFont systemFont = new SystemFont(family.name, font.fontName);
                if (fonts.contains(systemFont)) {
                    continue;
                }
                fonts.add(new SystemFont(family.name, font.fontName));
            }
        }

        for (Alias alias : parser.aliases) {
            if (alias.name == null || alias.toName == null || alias.weight == 0) {
                continue;
            }
            for (Family family : parser.families) {
                if (family.name == null || !family.name.equals(alias.toName)) {
                    continue;
                }
                for (Font font : family.fonts) {
                    if (font.weight == alias.weight) {
                        fonts.add(new SystemFont(alias.name, font.fontName));
                        break;
                    }
                }
            }
        }

        if (fonts.isEmpty()) {
            throw new Exception("No system fonts found.");
        }

        Collections.sort(fonts, new Comparator<SystemFont>() {

            @Override
            public int compare(SystemFont font1, SystemFont font2) {
                return font1.name.compareToIgnoreCase(font2.name);
            }

        });

        return fonts;
    }

    public static List<SystemFont> safelyGetSystemFonts() {
        try {
            return getSystemFonts();
        } catch (Exception e) {
            String[][] defaultSystemFonts = {
                    {
                            "cursive", "DancingScript-Regular.ttf"
                    }, {
                            "monospace", "DroidSansMono.ttf"
                    }, {
                            "sans-serif", "Roboto-Regular.ttf"
                    }, {
                            "sans-serif-light", "Roboto-Light.ttf"
                    }, {
                            "sans-serif-medium", "Roboto-Medium.ttf"
                    }, {
                            "sans-serif-black", "Roboto-Black.ttf"
                    }, {
                            "sans-serif-condensed", "RobotoCondensed-Regular.ttf"
                    }, {
                            "sans-serif-thin", "Roboto-Thin.ttf"
                    }, {
                            "serif", "NotoSerif-Regular.ttf"
                    }
            };
            List<SystemFont> fonts = new ArrayList<>();
            for (String[] names : defaultSystemFonts) {
                File file = new File("/system/fonts", names[1]);
                if (file.exists()) {
                    fonts.add(new SystemFont(names[0], file.getAbsolutePath()));
                }
            }
            return fonts;
        }
    }

    /* Parse fallback list (no names) */
    public static Config parse(InputStream in) throws XmlPullParserException, IOException {
        try {
            XmlPullParser parser = Xml.newPullParser();
            parser.setInput(in, null);
            parser.nextTag();
            return readFamilies(parser);
        } finally {
            in.close();
        }
    }

    private static Alias readAlias(XmlPullParser parser) throws XmlPullParserException, IOException {
        Alias alias = new Alias();
        alias.name = parser.getAttributeValue(null, "name");
        alias.toName = parser.getAttributeValue(null, "to");
        String weightStr = parser.getAttributeValue(null, "weight");
        if (weightStr == null) {
            alias.weight = 0;
        } else {
            alias.weight = Integer.parseInt(weightStr);
        }
        skip(parser); // alias tag is empty, ignore any contents and consume end tag
        return alias;
    }

    private static Config readFamilies(XmlPullParser parser) throws XmlPullParserException,
            IOException {
        Config config = new Config();
        parser.require(XmlPullParser.START_TAG, null, "familyset");
        while (parser.next() != XmlPullParser.END_TAG) {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                continue;
            }
            if (parser.getName().equals("family")) {
                config.families.add(readFamily(parser));
            } else if (parser.getName().equals("alias")) {
                config.aliases.add(readAlias(parser));
            } else {
                skip(parser);
            }
        }
        return config;
    }

    private static Family readFamily(XmlPullParser parser) throws XmlPullParserException,
            IOException {
        String name = parser.getAttributeValue(null, "name");
        String lang = parser.getAttributeValue(null, "lang");
        String variant = parser.getAttributeValue(null, "variant");
        List<Font> fonts = new ArrayList<Font>();
        while (parser.next() != XmlPullParser.END_TAG) {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                continue;
            }
            String tag = parser.getName();
            if (tag.equals("font")) {
                String weightStr = parser.getAttributeValue(null, "weight");
                int weight = weightStr == null ? 400 : Integer.parseInt(weightStr);
                boolean isItalic = "italic".equals(parser.getAttributeValue(null, "style"));
                String filename = parser.nextText();
                String fullFilename = "/system/fonts/" + filename;
                fonts.add(new Font(fullFilename, weight, isItalic));
            } else {
                skip(parser);
            }
        }
        return new Family(name, fonts, lang, variant);
    }

    private static void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
        int depth = 1;
        while (depth > 0) {
            switch (parser.next()) {
            case XmlPullParser.START_TAG:
                depth++;
                break;
            case XmlPullParser.END_TAG:
                depth--;
                break;
            }
        }
    }

    private FontListParser() {

    }

    public static class Alias {

        public String name;

        public String toName;

        public int weight;
    }

    public static class Config {

        public List<Alias> aliases;

        public List<Family> families;

        Config() {
            families = new ArrayList<Family>();
            aliases = new ArrayList<Alias>();
        }

    }

    public static class Family {

        public List<Font> fonts;

        public String lang;

        public String name;

        public String variant;

        public Family(String name, List<Font> fonts, String lang, String variant) {
            this.name = name;
            this.fonts = fonts;
            this.lang = lang;
            this.variant = variant;
        }

    }

    public static class Font {

        public String fontName;

        public boolean isItalic;

        public int weight;

        Font(String fontName, int weight, boolean isItalic) {
            this.fontName = fontName;
            this.weight = weight;
            this.isItalic = isItalic;
        }

    }

    public static class SystemFont {

        public String name;

        public String path;

        public SystemFont(String name, String path) {
            this.name = name;
            this.path = path;
        }

    }
}

আপনার প্রকল্পে উপরের শ্রেণিটি নির্দ্বিধায় ব্যবহার করুন। উদাহরণস্বরূপ, আপনি আপনার ব্যবহারকারীদের ফন্ট পরিবারগুলির একটি নির্বাচন দিতে এবং তাদের পছন্দ অনুসারে টাইপফেস সেট করতে পারেন।

একটি ছোট অসম্পূর্ণ উদাহরণ:

final List<FontListParser.SystemFont> fonts = FontListParser.safelyGetSystemFonts();
String[] items = new String[fonts.size()];
for (int i = 0; i < fonts.size(); i++) {
    items[i] = fonts.get(i).name;
}

new AlertDialog.Builder(this).setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        FontListParser.SystemFont selectedFont = fonts.get(which);
        // TODO: do something with the font
        Toast.makeText(getApplicationContext(), selectedFont.path, Toast.LENGTH_LONG).show();
    }
}).show();

আপনি কি জানেন যে অ্যান্ড্রয়েডের কোন সংস্করণ কোন ফন্ট যুক্ত করেছে?
অ্যান্ড্রয়েড বিকাশকারী

পছন্দ করুন আপনি সম্ভবত এখানে পরিবর্তনগুলি দেখে সন্ধান করতে পারেন: github.com/android/platform_frameworks_base/blob/…
জ্যারেড রুম্মার

@ জারেড রুমার, আমার অজ্ঞতা ক্ষমা করুন। কেন / ওজন == 400 কি?
স্যামুয়েল

1
@ সামুয়েল আমি এই কোডটি কিছুক্ষণের মধ্যে দেখিনি, তবে 400 ফন্টের ওজন "নরমাল" বা "নিয়মিত" ফন্টের জন্য ব্যবহৃত হয় is উদাহরণস্বরূপ, রোবোটো-
রেগুলারটির

এর জন্য কি মূল বা কিছু দরকার? আমি এই কোডটি অ্যান্ড্রয়েড এমুলেটরে (সংস্করণ ৮.১) চালিয়েছি এবং যখন আমি কল করেছি তখন আমি getSystemFonts()একটি ব্যতিক্রম পেয়েছিলামorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG (empty) <axis tag='wdth' stylevalue='100.0'>@219:51 in java.io.InputStreamReader@f001fb3)
অভিশাপিত শাকসব্জি

49

অ্যান্ড্রয়েড আপনাকে এক্সএমএল লেআউট থেকে কাস্টম ফন্ট সেট করতে দেয় না। পরিবর্তে, আপনাকে অবশ্যই আপনার অ্যাপ্লিকেশন এর সম্পদ ফোল্ডারে নির্দিষ্ট ফন্ট ফাইলটি বান্ডিল করতে হবে এবং এটি প্রোগ্রামিকভাবে সেট করতে হবে। কিছুটা এইরকম:

TextView textView = (TextView) findViewById(<your TextView ID>);
Typeface typeFace = Typeface.createFromAsset(getAssets(), "<file name>");
textView.setTypeface(typeFace);

দ্রষ্টব্য যে আপনি সেট কোডেন্ট ভিউ () কল করার পরে কেবল এই কোডটি চালাতে পারবেন। এছাড়াও, কেবলমাত্র কয়েকটি ফন্ট অ্যান্ড্রয়েড দ্বারা সমর্থিত এবং একটি .ttf (TrueType)বা .otf (OpenType)ফর্ম্যাটে থাকা উচিত । তারপরেও কিছু ফন্ট কাজ নাও করতে পারে।

এই হ'ল ফন্ট যা অবশ্যই অ্যান্ড্রয়েডে কাজ করে এবং আপনার ফন্ট ফাইল অ্যান্ড্রয়েড সমর্থন করে না এমন ক্ষেত্রে আপনার কোডটি কাজ করছে কিনা তা নিশ্চিত করতে আপনি এটি ব্যবহার করতে পারেন।

অ্যান্ড্রয়েড ও আপডেট: রজারের মন্তব্যের ভিত্তিতে অ্যান্ড্রয়েড ও- তে এক্সএমএল দিয়ে এটি এখন সম্ভব ।


"অ্যান্ড্রয়েড আপনাকে এক্সএমএল লেআউট থেকে কাস্টম ফন্ট সেট করতে দেয় না" " এটি অ্যান্ড্রয়েড ও-তে পরিবর্তিত হয়েছে, যা আপনাকে কাস্টমাইজড ফন্ট পরিবার তৈরি করতে এবং এগুলিকে এক্সএমএল এ প্রয়োগ করতে দেয়: বিকাশকারী.অ্যান্ড্রয়েড
রজার হুয়াং


25

এটা যেমন হয় android:typeface

অন্তর্নির্মিত ফন্টগুলি হ'ল:

  • সাধারণ
  • ব্যতীত
  • সেরিফ
  • মোনোস্পেস

দেখুন android: টাইপফেস


4
আমি মনে করি না এটি একই জিনিস, তবে এটি প্রদর্শিত হয় যে আমরা উভয় ব্যবহার করতে পারি না। দেখে মনে হচ্ছে এখন ম্যাপযুক্ত তিনটি আলাদা বৈশিষ্ট্য কম নেই setTypeface()। যথা fontFamily, typefaceএবং textStyle। তবে আমি কীভাবে কোনও কংক্রিট টাইপফেস উদাহরণটি সমাধান করার জন্য এগুলি সংক্ষিপ্তভাবে সংযুক্ত করা হয় তা আমার জীবনের পক্ষে বুঝতে পারি না। কেউ কি এটি জানতে পেরেছেন? গুগলের ডকুমেন্টেশন সহায়ক থেকে কম ...
র‌্যাড হারিং

23

আপনি যদি এটি প্রোগ্রামক্রমে চান, আপনি ব্যবহার করতে পারেন

label.setTypeface(Typeface.SANS_SERIF, Typeface.ITALIC);

SANS_SERIFআপনি যেখানে ব্যবহার করতে পারেন:

  • DEFAULT
  • DEFAULT_BOLD
  • MONOSPACE
  • SANS_SERIF
  • SERIF

এবং ITALICআপনি যেখানে ব্যবহার করতে পারেন:

  • BOLD
  • BOLD_ITALIC
  • ITALIC
  • NORMAL

সবই অ্যান্ড্রয়েড বিকাশকারীদের উপর বিবৃত


15

আমি আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে কাস্টম ফন্ট ব্যবহার করার অনুমতি দেওয়ার জন্য ডিজাইন করা ক্রিস জেনেক্সের দুর্দান্ত লাইব্রেরি ক্যালিগ্রাফি ব্যবহার করছি । একবার চেষ্টা করে দেখো!


হ্যাঁ, তবে উদাহরণস্বরূপ আমি এটি ফাংশনল ব্যবহার করতে চাই, তবে সমস্ত গ্রন্থাগারটি প্রয়োগ করতে চাইনি;)
মোরোজভ

12

আপনি যা চান তা সম্ভব নয়। TypeFaceআপনার কোডটি অবশ্যই সেট করা দরকার ।

আপনি XMLযা করতে পারেন তা হচ্ছে

android:typeface="sans" | "serif" | "monospace"

অন্যথায় এটি আপনি এক্সএমএলে ফন্টগুলির সাথে খুব বেশি খেলতে পারবেন না। :)

জন্য Arialআপনি আপনার কোড টাইপ মুখ সেট করতে হবে।


11

হরফগুলি পরিচালনা করার একটি সহজ উপায় হ'ল সংস্থাগুলির মাধ্যমে এগুলি ঘোষণা করা:

<!--++++++++++++++++++++++++++-->
<!--added on API 16 (JB - 4.1)-->
<!--++++++++++++++++++++++++++-->
<!--the default font-->
<string name="fontFamily__roboto_regular">sans-serif</string>
<string name="fontFamily__roboto_light">sans-serif-light</string>
<string name="fontFamily__roboto_condensed">sans-serif-condensed</string>

<!--+++++++++++++++++++++++++++++-->
<!--added on API 17 (JBMR1 - 4.2)-->
<!--+++++++++++++++++++++++++++++-->
<string name="fontFamily__roboto_thin">sans-serif-thin</string>

<!--+++++++++++++++++++++++++++-->
<!--added on Lollipop (LL- 5.0)-->
<!--+++++++++++++++++++++++++++-->
<string name="fontFamily__roboto_medium">sans-serif-medium</string>
<string name="fontFamily__roboto_black">sans-serif-black</string>
<string name="fontFamily__roboto_condensed_light">sans-serif-condensed-light</string>

এটি উত্স কোডের উপর ভিত্তি করে এখানে এবং এখানে


তাদের ঘোষণা কোথায়?
এজেড_

@ এজেড_ অনেকগুলি রিসোর্স ফাইলের মতো, আপনি এটি "রেস / মান /" ফোল্ডারের ভিতরে আপনার ইচ্ছামত কোনও এক্সএমএল ফাইল রাখতে পারেন। উদাহরণস্বরূপ, এটি "res / মান / fouts.xML" এ রাখুন। এবং এটি ব্যবহার করতে, উদাহরণস্বরূপ এটিকে কেবল করুন: অ্যান্ড্রয়েড: ফন্টফ্যামিলি = "স্ট্রিং / ফন্টফ্যামিলি_রোবোটো_গ্রুলার"
অ্যান্ড্রয়েড বিকাশকারী

ধন্যবাদ, আমি এই github.com/norbsoft/android-typeface-helper ব্যবহার করছি এবং এটি সত্যই সহায়ক
এজেড_

ঠিক আছে, গ্রন্থাগারটি সম্ভবত এটি প্রোগ্রামগতভাবে করার জন্য। এখানে এটি এক্সএমএল
অ্যান্ড্রয়েড বিকাশকারী

9

গতিশীলভাবে আপনি ফন্টফ্যামিলি অ্যান্ড্রয়েডের অনুরূপ সেট করতে পারেন: ফন্টফ্যামিলি xML এ এটি ব্যবহার করে,

For Custom font:

 TextView tv = ((TextView) v.findViewById(R.id.select_item_title));
 Typeface face=Typeface.createFromAsset(getAssets(),"fonts/mycustomfont.ttf"); 
 tv.setTypeface(face);

For Default font:

 tv.setTypeface(Typeface.create("sans-serif-medium",Typeface.NORMAL));

এটি ডিফল্ট ফন্ট পরিবারের ব্যবহৃত তালিকার তালিকা, ডাবল উদ্ধৃতি স্ট্রিং "সানস-সিরিফ-মিডিয়াম" প্রতিস্থাপন করে এর যে কোনওটি ব্যবহার করুন

FONT FAMILY                    TTF FILE                    

1  casual                      ComingSoon.ttf              
2  cursive                     DancingScript-Regular.ttf   
3  monospace                   DroidSansMono.ttf           
4  sans-serif                  Roboto-Regular.ttf          
5  sans-serif-black            Roboto-Black.ttf            
6  sans-serif-condensed        RobotoCondensed-Regular.ttf 
7  sans-serif-condensed-light  RobotoCondensed-Light.ttf   
8  sans-serif-light            Roboto-Light.ttf            
9  sans-serif-medium           Roboto-Medium.ttf           
10  sans-serif-smallcaps       CarroisGothicSC-Regular.ttf 
11  sans-serif-thin            Roboto-Thin.ttf             
12  serif                      NotoSerif-Regular.ttf       
13  serif-monospace            CutiveMono.ttf              

"mycustomfont.ttf" হল টিটিএফ ফাইল। পথ থাকবে src / সম্পদ / ফন্ট / mycustomfont.ttf , আপনি এই ডিফল্ট ফন্ট সম্পর্কে আরো পাঠাতে পারেন ডিফল্ট ফন্ট পরিবার


9
Typeface typeface = ResourcesCompat.getFont(context, R.font.font_name);
textView.setTypeface(typeface);

প্রোগ্রাম> থেকে ফন্ট ডিরেক্টরি থেকে যে কোনও পাঠ্যদর্শনটিতে সহজেই ফন্ট সেট করুন


7

আমি মনে করি আমি অনেক দেরি করে ফেলেছি তবে এই সমাধানটি অন্যদের জন্য সহায়ক। কাস্টম ফন্ট ব্যবহার করার জন্য আপনার ফন্ট ডিরেক্টরিটি আপনার ফন্ট ডিরেক্টরিতে রাখুন।

textView.setTypeface(ResourcesCompat.getFont(this, R.font.lato));

6

কিছু পরীক্ষা এবং ত্রুটি সহ আমি নিম্নলিখিতটি শিখেছি।

* .XML এর মধ্যে আপনি কেবল টাইপফেসের সাথে নয়, নিম্নলিখিত ফাংশনগুলির সাথে স্টক ফন্টগুলি একত্রিত করতে পারেন:

 android:fontFamily="serif" 
 android:textStyle="italic"

এই দুটি শৈলীর সাথে, অন্য কোনও ক্ষেত্রে টাইপফেস ব্যবহার করার প্রয়োজন ছিল না। ফন্টফ্যামিলি এবং টেক্সট স্টাইলের সাথে সংমিশ্রণের পরিধিটি আরও অনেক বড়।


5

অ্যান্ড্রয়েডের বৈধ মান: হরফফ্যামিলি / সিস্টেমেট / সেটেক / সিস্টেমে_ফন্টস.এক্সএমএল(4.x) বা / সিস্টেমেট / এফ / ফন্টস.এক্সএম.এল.এল.5.x) এ সংজ্ঞায়িত করা হয়েছে। তবে ডিভাইস প্রস্তুতকারক এটিকে সংশোধন করতে পারে, সুতরাং ফন্টফ্যামিলি মান সেট করে প্রকৃত ফন্টটি নির্দিষ্ট ডিভাইসের উপরে উল্লিখিত ফাইলের উপর নির্ভর করে।

এওএসপিতে, আরিয়াল ফন্টটি বৈধ তবে "অ্যারিয়াল" "আড়িয়াল" নয়, উদাহরণস্বরূপ অ্যান্ড্রয়েড: ফন্টফ্যামিলি = " আরিয়াল" ব্যবহার করে সংজ্ঞায়িত করতে হবে । কিটক্যাট এর সিস্টেম_ফন্টস.এক্সএমএলটিতে একটি তাত্ক্ষণিক নজর দিন

    <family>
    <nameset>
        <name>sans-serif</name>
        <name>arial</name>
        <name>helvetica</name>
        <name>tahoma</name>
        <name>verdana</name>
    </nameset>
    <fileset>
        <file>Roboto-Regular.ttf</file>
        <file>Roboto-Bold.ttf</file>
        <file>Roboto-Italic.ttf</file>
        <file>Roboto-BoldItalic.ttf</file>
    </fileset>
</family>

////////////////////////////////////////////////// ////////////////////////

লেআউটে একটি "ফন্ট" সংজ্ঞায়িত করার জন্য তিনটি প্রাসঙ্গিক এক্সএমএল-গুণাবলী রয়েছে - অ্যান্ড্রয়েড: ফন্টফ্যামিলি , অ্যান্ড্রয়েড: টাইপফেস এবং অ্যান্ড্রয়েড: টেক্সট স্টাইল । "ফন্টফ্যামিলি" এবং "টেক্সট স্টাইল" বা "টাইপফেস" এবং "টেক্সট স্টাইল" এর সংমিশ্রণটি পাঠ্যে ফন্টের চেহারা পরিবর্তন করতে ব্যবহার করা যেতে পারে, তাই একা ব্যবহৃত হয়। টেক্সটভিউ.জভাতে কোড স্নিপেট এই জাতীয়:

    private void setTypefaceFromAttrs(String familyName, int typefaceIndex, int styleIndex) {
    Typeface tf = null;
    if (familyName != null) {
        tf = Typeface.create(familyName, styleIndex);
        if (tf != null) {
            setTypeface(tf);
            return;
        }
    }
    switch (typefaceIndex) {
        case SANS:
            tf = Typeface.SANS_SERIF;
            break;

        case SERIF:
            tf = Typeface.SERIF;
            break;

        case MONOSPACE:
            tf = Typeface.MONOSPACE;
            break;
    }
    setTypeface(tf, styleIndex);
}


    public void setTypeface(Typeface tf, int style) {
    if (style > 0) {
        if (tf == null) {
            tf = Typeface.defaultFromStyle(style);
        } else {
            tf = Typeface.create(tf, style);
        }

        setTypeface(tf);
        // now compute what (if any) algorithmic styling is needed
        int typefaceStyle = tf != null ? tf.getStyle() : 0;
        int need = style & ~typefaceStyle;
        mTextPaint.setFakeBoldText((need & Typeface.BOLD) != 0);
        mTextPaint.setTextSkewX((need & Typeface.ITALIC) != 0 ? -0.25f : 0);
    } else {
        mTextPaint.setFakeBoldText(false);
        mTextPaint.setTextSkewX(0);
        setTypeface(tf);
    }
}

কোড থেকে আমরা দেখতে পারি:

  1. যদি "fontFamily" সেট করা থাকে তবে "টাইপফেস" উপেক্ষা করা হবে।
  2. "টাইপফেস" এর মানক এবং মান সীমিত রয়েছে। আসলে, মানগুলি হ'ল "সাধারণ" "সানস" "সেরিফ" এবং "মনোস্পেস", সেগুলি system_fouts.xML (4.x) বা ফন্টস.এক্সএমএল (5.x) পাওয়া যায়। আসলে "সাধারণ" এবং "সং" উভয়ই সিস্টেমের ডিফল্ট ফন্ট।
  3. "ফন্টফ্যামিলি" বিল্ট-ইন ফন্টের সমস্ত ফন্ট সেট করতে ব্যবহার করা যেতে পারে, যখন "টাইপফেস" কেবল "সানস-সেরিফ" "সেরিফ" এবং "মনোস্পেস" (বিশ্বের তিনটি প্রধান বিভাগের ফন্টের ধরণ) সরবরাহ করে ।
  4. যখন কেবল "টেক্সট স্টাইল" সেট করা হয়, আমরা আসলে ডিফল্ট ফন্ট এবং নির্দিষ্ট স্টাইল সেট করি। কার্যকর মান হ'ল "সাধারণ" "সাহসী" "তাত্পর্য" এবং "গা bold় | তাত্পর্য"।

4

এখানে একটি সহজ ওয়া ওয়াই যা কিছু ক্ষেত্রে কাজ করতে পারে। নীতিটি হ'ল আপনার এক্সএমএল লেআউটে একটি দৃশ্যমান টেক্সটভিউ যুক্ত করা এবং জাভা কোডটিতে এর টাইপফেস পাওয়া

এক্সএমএল ফাইলে লেআউট:

 <TextView
        android:text="The classic bread is made of flour hot and salty. The classic bread is made of flour hot and salty. The classic bread is made of flour hot and salty."
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:fontFamily="sans-serif-thin"
        android:id="@+id/textViewDescription"/>

এবং জাভা কোড:

myText.setTypeface(textViewSelectedDescription.getTypeface());

এটি আমার পক্ষে কাজ করেছে (উদাহরণস্বরূপ টেক্সটসুইচারের মধ্যে)।



4

আপনি নীচের মতো রেজ ডিরেক্টরিতে ফন্ট ফোল্ডার যুক্ত করে এটিও করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

তারপরে, ফন্টটিকে সংস্থানের ধরণ হিসাবে নির্বাচন করুন। এখানে চিত্র বর্ণনা লিখুন

আপনি https://www.1001fouts.com/ থেকে উপলব্ধ ফন্টগুলি খুঁজে পেতে পারেন এবং তারপরে এই ফন্ট ডিরেক্টরিতে টিটিএফ ফাইলগুলি বের করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

অবশেষে, কেবলমাত্র এক্সএমএল ফাইলটি পরিবর্তন করুন যা আপনার পাঠ্যদর্শনটি অ্যান্ড্রয়েড যোগ করে: ফন্টফ্যামিলি: "@ ফন্ট / urfontfilename"

এখানে চিত্র বর্ণনা লিখুন


খুব সুন্দর, এর জন্য আপনাকে ধন্যবাদ। আইডিকি কেন অন্যদের আরও বেশি তারা থাকে তবে আপনার মেটেরিয়াল ডিজাইনের টেক্সট ভিউয়ের সাথে কাজ করার বিষয়টি নিশ্চিত হয়ে গেছে, আপনাকে অবশ্যই ব্যবহার করতে হবে app:fontFamily=, বাকি সমস্ত কিছুই একরকম।
EvOlaNdLuPiZ

আপনি আমার জীবন বাঁচিয়েছেন, আমি সবেমাত্র ফন্ট নামে একটি ফোল্ডার তৈরি করেছি এবং এটি কার্যকর হয়নি। যাইহোক আমি আপনার উপায়টি ব্যবহার করেছি এবং এটি কার্যকর হয়েছে han ধন্যবাদ
হিলাল

4

একটি সহজ উপায় হল প্রকল্পে পছন্দসই ফন্ট যুক্ত করা ।

যান File-> New-> নতুন রিসোর্স নির্দেশিকা নির্বাচন ফন্ট

এটি আপনার সংস্থানগুলিতে একটি নতুন ডিরেক্টরি, ফন্ট তৈরি করবে ।

আপনার ফন্টটি ডাউনলোড করুন (.ttf) । আমি ব্যবহার https://fonts.google.com একই জন্য

এটি আপনার ফন্ট ফোল্ডারে যুক্ত করুন তারপরে এগুলি এক্সএমএল বা প্রোগ্রামগতভাবে ব্যবহার করুন।

এক্সএমএল -

<TextView 
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/your_font"/>

অগ্রণী -

 Typeface typeface = getResources().getFont(R.font.your_font);
 textView.setTypeface(typeface); 

8
আরও ভাল ব্যবহারের ResourcesCompat.getFontপদ্ধতি
ভাদিম কোতোভ

3
<string name="font_family_display_4_material">sans-serif-light</string>
<string name="font_family_display_3_material">sans-serif</string>
<string name="font_family_display_2_material">sans-serif</string>
<string name="font_family_display_1_material">sans-serif</string>
<string name="font_family_headline_material">sans-serif</string>
<string name="font_family_title_material">sans-serif-medium</string>
<string name="font_family_subhead_material">sans-serif</string>
<string name="font_family_menu_material">sans-serif</string>
<string name="font_family_body_2_material">sans-serif-medium</string>
<string name="font_family_body_1_material">sans-serif</string>
<string name="font_family_caption_material">sans-serif</string>
<string name="font_family_button_material">sans-serif-medium</string>

3

আপনি যদি একই ফন্ট পরিবারের সাথে অনেক জায়গায় একটি টেক্সটভিউ ব্যবহার করতে চান তবে টেক্সটভিউ ক্লাসটি প্রসারিত করুন এবং আপনার ফন্টটি এভাবে সেট করুন: -

public class ProximaNovaTextView extends TextView {

    public ProximaNovaTextView(Context context) {
        super(context);

        applyCustomFont(context);
    }

    public ProximaNovaTextView(Context context, AttributeSet attrs) {
        super(context, attrs);

        applyCustomFont(context);
    }

    public ProximaNovaTextView(Context context, AttributeSet attrs, int defStyle) {
       super(context, attrs, defStyle);

       applyCustomFont(context);
    } 

    private void applyCustomFont(Context context) {
        Typeface customFont = FontCache.getTypeface("proximanova_regular.otf", context);
        setTypeface(customFont);
    }
}

এবং তারপরে এই প্রবন্ধটি টেক্সটভিউয়ের জন্য এক্সএমএলে এই কাস্টম ক্লাসটি ব্যবহার করুন: -

   <com.myapp.customview.ProximaNovaTextView
        android:id="@+id/feed_list_item_name_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        />

3

যদি আপনি অ্যান্ড্রয়েড স্টুডিও 3.5+ ব্যবহার করেন তবে ফন্ট পরিবর্তন করা খুব সহজ। ডিজাইন ভিউতে পাঠ্য উইজেটটি নির্বাচন করুন এবং অ্যাট্রিবিউট উইন্ডোতে ফন্টফ্যামিলি চেক করুন। মান ড্রপডাউনতে সমস্ত উপলব্ধ ফন্ট রয়েছে যা থেকে আপনি একটি নির্বাচন করতে পারেন। আপনি যদি গুগল ফন্টের সন্ধান করছেন তবে আরও ফন্ট বিকল্প ক্লিক করুন।

বৈশিষ্ট্য উইন্ডো বৈশিষ্ট্য উইন্ডো

গুগল ফন্ট গুগল ফন্ট


2

আমি কেবল উল্লেখ করতে চাই যে অ্যান্ড্রয়েডের অভ্যন্তরে ফন্টগুলির সাথে নরকটি শেষ হতে চলেছে, কারণ এই বছর গুগল আইওতে আমরা শেষ পর্যন্ত এটি পেয়েছি -> https://developer.android.com/preview/features/working-with-fouts। এইচটিএমএল

এখন একটি ফন্টের ধরণে একটি নতুন সংস্থান রয়েছে এবং আপনি আপনার সমস্ত অ্যাপ্লিকেশন ফন্টগুলি রেস / ফন্ট ফোল্ডারের ভিতরে রাখতে পারবেন এবং তারপরে আর.ফন্ট.মি_কাস্টম_ফন্টের সাহায্যে অ্যাক্সেস করতে পারবেন, যেমন আপনি স্ট্রিং রেস মানগুলি, অঙ্কনীয় রেস মানগুলি অ্যাক্সেস করতে পারেন ইত্যাদি সুযোগও রয়েছে You ফন্ট-মুখ তৈরি করতে এক্সএমএল ফাইল , যা আপনার কাস্টম ফন্টগুলির সেট হবে (ইটালিক, সাহসী এবং আন্ডারলাইন অ্যাটর সম্পর্কিত)।

আরও তথ্যের জন্য উপরের লিঙ্কটি পড়ুন। এর সমর্থন দেখুন।


দুঃখের বিষয় এটি এখনও ইন্টেলিজের সাথে কাজ করে না (যদিও অ্যান্ড্রয়েড স্টুডিও 3.0.০+ তে আকর্ষণীয় কাজ করে)।
ডোমিনিকাস কে।

হ্যাঁ, তবে Redmanউপরের ব্যবহারকারীর উত্তর এখনও অনেক তাই সমাধানের প্রয়োজনীয় অংশ।
জঙ্গলেদেভ

2

এটির জন্য একটি দুর্দান্ত গ্রন্থাগার রয়েছে

    implementation 'uk.co.chrisjenx:calligraphy:2.3.0'

এই লাইব্রেরিটি পুরো অ্যাপ্লিকেশনটিতে সমস্ত দর্শন ফন্ট পরিবর্তন করতে ব্যবহৃত হয়। এটি অ্যাডাপ্টার দর্শন যেমন তালিকার ভিউয়ের জন্য প্রযোজ্য নয়। তার জন্য আমাদের প্রতিটি অ্যাডাপ্টারে বিশেষভাবে কোড যুক্ত করা দরকার
সেন্থিলভেল এস

2

নতুন হরফ সংস্থান সরাসরি fontব্যবহার করে সেট করার অনুমতি দেয়

android:fontFamily="@font/my_font_in_font_folder"

1

আপনি এর res/layout/value/style.xmlমতো স্টাইল সেট করেছেন :

<style name="boldText">
    <item name="android:textStyle">bold|italic</item>
    <item name="android:textColor">#FFFFFF</item>
</style>

এবং main.xmlফাইলের ব্যবহারে এই স্টাইলটি ব্যবহার করতে:

style="@style/boldText"

1

অ্যান্ড্রয়েড-স্টুডিও 3 এবং এর উপরে আপনি এই স্টাইলটি ব্যবহার করতে পারেন এবং তারপরে textViewঅ্যাপে সমস্ত ফন্ট পরিবর্তন করতে পারেন ।

আপনার এই স্টাইলটি তৈরি করুন style.xml:

<!--OverRide all textView font-->
<style name="defaultTextViewStyle" parent="android:Widget.TextView">
        <item name="android:fontFamily">@font/your_custom_font</item>
</style>

তারপরে এটি আপনার থিমটিতে ব্যবহার করুন:

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textViewStyle">@style/defaultTextViewStyle</item>
    </style>

1

টেক্সটভিউতে ফন্টটি প্রোগ্র্যাম্যাটিকভাবে যুক্ত করার সহজতম উপায় হ'ল প্রথমে, প্রকল্পের আপনার সম্পদ ফোল্ডারে হরফ ফাইল যুক্ত করুন। উদাহরণস্বরূপ আপনার ফন্টের পথটি দেখতে এমন দেখাচ্ছে:assets/fonts/my_font.otf

এবং এটি একটি টেক্সটভিউতে যুক্ত করুন:

Kotlin

val font_path = "fonts/my_font.otf"  

myTypeface = Typeface.createFromAsset(MyApplication.getInstance().assets, font_path)

textView.typeface = myTypeface

জাভা

String font_path = "fonts/my_font.otf";
Typeface myTypeface = Typeface.createFromAsset(MyApplication.getInstance().assets, font_path)
textView.setTypeface(myTypeface);

0

এখানে আপনি সমস্ত উপলভ্য ফন্টফ্যামিলি মানগুলি দেখতে পাচ্ছেন এবং এটি ফন্ট ফাইলের নামের সাথে সম্পর্কিত (এই ফাইলটি অ্যান্ড্রয়েড 5.0+ এ ব্যবহার করছে)। মোবাইল ডিভাইসে, আপনি এটি এতে খুঁজে পেতে পারেন:

/system/etc/fouts.xml (5.0+ এর জন্য)

(অ্যান্ড্রয়েড ৪.৪ এবং এর নীচে এই সংস্করণটি ব্যবহার করার জন্য , তবে আমি মনে করি fonts.xmlএটির আরও সুস্পষ্ট ফর্ম্যাট রয়েছে এবং এটি বোঝা সহজ))

উদাহরণ স্বরূপ,

    <!-- first font is default -->
20    <family name="sans-serif">
21        <font weight="100" style="normal">Roboto-Thin.ttf</font>
22        <font weight="100" style="italic">Roboto-ThinItalic.ttf</font>
23        <font weight="300" style="normal">Roboto-Light.ttf</font>
24        <font weight="300" style="italic">Roboto-LightItalic.ttf</font>
25        <font weight="400" style="normal">Roboto-Regular.ttf</font>
26        <font weight="400" style="italic">Roboto-Italic.ttf</font>
27        <font weight="500" style="normal">Roboto-Medium.ttf</font>
28        <font weight="500" style="italic">Roboto-MediumItalic.ttf</font>
29        <font weight="900" style="normal">Roboto-Black.ttf</font>
30        <font weight="900" style="italic">Roboto-BlackItalic.ttf</font>
31        <font weight="700" style="normal">Roboto-Bold.ttf</font>
32        <font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
33    </family>

নাম অ্যাট্রিবিউট name="sans-serif"এর familyfontFamily: ট্যাগ মান আপনি Android ব্যবহার করতে পারেন সংজ্ঞায়িত।

fontট্যাগ অনুরূপ ফন্ট ফাইল নির্ধারণ করুন।

এই ক্ষেত্রে, আপনি উত্সটির আওতায় এড়াতে পারবেন <!-- fallback fonts -->, এটি হরফগুলির ফ্যালব্যাক যুক্তির জন্য ব্যবহার করছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.