android - CollapsingToolbarLayout टाइपफेस और आकार कैसे बदलें?




fonts font-size (6)

अपडेट करें

इससे पहले कि हम कोड में गोता textSize , चलो पहले हमारे CollapsingToolbarLayout लिए textSize तय करें। Google ने material.io नामक एक वेबसाइट प्रकाशित की, यह वेबसाइट Typography से निपटने के तरीके के बारे में सबसे अच्छा तरीका भी बताती है।

लेख "हेडिंग" श्रेणी के बारे में उल्लेख किया गया है जो sp में उपयोग करने के लिए अनुशंसित फ़ॉन्ट आकार भी बताता है।

हालाँकि लेख ने कभी भी CollapsingToolbarLayout's विस्तारित आकार CollapsingToolbarLayout's उल्लेख नहीं किया है, लेकिन पुस्तकालय com.android.support:design हमारे मामले के लिए एक TextAppearance प्रदान करता है। स्रोत के साथ कुछ खुदाई के साथ यह पता चला है कि आकार 34sp (लेख में उल्लेख नहीं किया गया है)।

तो कैसे ढह आकार के बारे में? सौभाग्य से लेख में कुछ बताया गया है और यह 20sp

और अब तक का सबसे अच्छा TextAppearance जो कि संकुचित मोड में फिट होता है, TextAppearance.AppCompat.Title जबकि हमारा विस्तारित मोड TextAppearance TextAppearance.Design.CollapsingToolbar.Expanded

यदि आप उन सभी के ऊपर हमारे सभी उदाहरणों का अवलोकन करते हैं, तो फ़ॉन्ट के REGULAR संस्करण का उपयोग करता है जो यह कहना सुरक्षित है कि Roboto regular से कार्य करेगा जब तक कि आपके पास विशिष्ट आवश्यकताएं न हों

यह फोंट डाउनलोड करने के लिए बहुत अधिक काम हो सकता है क्यों एक पुस्तकालय का उपयोग न करें जिसमें सभी आवश्यक रोबोटो फोंट हैं? तो मैं Roboto उदा Typer लिए एक सुलेख पुस्तकालय का परिचय।

dependencies {
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.rhexgomez.typer:typer-roboto:2.0.0'
}
<android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleTextAppearance="@style/TextAppearance.Design.CollapsingToolbar.Expanded"
            app:collapsedTitleTextAppearance="@style/TextAppearance.AppCompat.Title"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

जावा

// Java example
CollapsingToolbarLayout collapsingToolbar = findViewById(R.id.collapsing_toolbar);
collapsingToolbar.setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR());
collapsingToolbar.setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR());

Kotlin

// Kotlin example
collapsing_toolbar.apply {
    setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR)
    setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR)
}

यह 2019 का अपडेट है क्योंकि टायपर लाइब्रेरी अपडेटेड है! मैं पुस्तकालय का लेखक भी हूं।

मैं CollapsingToolbarLayout फ़ॉन्ट आकार और इसके प्रकार को बदलना चाहता हूं। मैं इसे कैसे प्राप्त कर सकता हूं?


Android 8.0 (एपीआई स्तर 26) ने एक नई सुविधा शुरू की है, एक्सएमएल में फोंट

अब आप फोंट को संसाधन के रूप में परिभाषित कर सकते हैं https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html

  • अपने फोंट को res-> font-> फोल्डर में रखें
  • Font.xml को परिभाषित करें
   <?xml version="1.0" encoding="utf-8"?>
      <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>

अगला सेट

    val typeface = ResourcesCompat.getFont(this, R.font.lobster_regular)
    htab_collapse_toolbar.setCollapsedTitleTypeface(typeface)
    htab_collapse_toolbar.setExpandedTitleTypeface(typeface)

आप कुछ इस तरह से कर सकते हैं:

mCollapsingToolbarLayout.setTitle(getTitle());
mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar);
mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar);

अनुरूप पाठ शैली हो सकती है: 28sp # 000 बोल्ड

<style name="CollapsedAppBar" parent="@android:style/TextAppearance.Medium">
    <item name="android:textSize">24sp</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textStyle">normal</item>
</style>

संदर्भ के लिए here भी देखें।


ऐसा लगता है कि मेरे पास समाधान है:

private void makeCollapsingToolbarLayoutLooksGood(CollapsingToolbarLayout collapsingToolbarLayout) {
    try {
        final Field field = collapsingToolbarLayout.getClass().getDeclaredField("mCollapsingTextHelper");
        field.setAccessible(true);

        final Object object = field.get(collapsingToolbarLayout);
        final Field tpf = object.getClass().getDeclaredField("mTextPaint");
        tpf.setAccessible(true);

        ((TextPaint) tpf.get(object)).setTypeface(Typeface.createFromAsset(getAssets(), "Roboto-Bold.ttf"));
        ((TextPaint) tpf.get(object)).setColor(getResources().getColor(R.color.ice));
    } catch (Exception ignored) {
    }
}

फ़ॉन्ट आकार या माता-पिता बदलें।

<style name="expandedappbar" parent="@android:style/TextAppearance.Medium"> //Change Medium to Small
    <item name="android:textSize">28sp</item>  <!--Or Change the font size -->
    <item name="android:textColor">@color/white</item>
    <item name="android:textStyle">bold</item>
</style>

<style name="collapsedappbar" parent="@android:style/TextAppearance.Medium">
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">@color/white</item>
</style>

यहां सभी उत्तरों को जोड़ने के लिए, यह मेरे लिए xml में काम नहीं करता था, चाहे मैं कोई भी आवेदन करने की कोशिश करूं, AppTheme में, शैलियों में संदर्भित। मैं वर्तमान में समर्थन पुस्तकालय 27.1.1 का उपयोग कर रहा हूं

इसने केवल कार्यक्रमबद्ध रूप से काम किया।

Typeface typeface = ResourcesCompat.getFont(this, R.font.my_custom_font);
collapsingToolbarLayout.setCollapsedTitleTypeface(typeface);
collapsingToolbarLayout.setExpandedTitleTypeface(typeface);




android-collapsingtoolbarlayout