मैं CollapsingToolbarLayout
फ़ॉन्ट आकार और इसके प्रकार को बदलना चाहता हूं । मैं इसे कैसे प्राप्त कर सकता हूं?
जवाबों:
इससे पहले कि हम कोड में गोता लगाएँ, चलो पहले textSize
हमारे लिए फैसला करें CollapsingToolbarLayout
। Google ने एक वेबसाइट प्रकाशित की जिसका नाम है material.io
, यह वेबसाइट टाइपोग्राफी से निपटने के तरीके के बारे में सबसे अच्छा तरीका भी बताती है ।
लेख "हेडिंग" श्रेणी के बारे में उल्लेख किया गया है जिसमें उपयोग करने के लिए अनुशंसित फ़ॉन्ट आकार भी बताया गया है sp
।
हालांकि लेख ने अनुशंसित CollapsingToolbarLayout's
विस्तारित आकार का कभी उल्लेख नहीं किया है लेकिन पुस्तकालय हमारे मामले के लिए com.android.support:design
प्रदान करता है TextAppearance
। स्रोत के साथ कुछ खुदाई के साथ यह पता चला है कि आकार है 34sp
(लेख में उल्लेख नहीं किया गया है)।
तो कैसे ढह आकार के बारे में? सौभाग्य से लेख में कुछ उल्लेख किया गया है और यह है 20sp
।
और TextAppearance
अब तक का सबसे अच्छा है जो ढह मोड में फिट बैठता है, TextAppearance.AppCompat.Title
जबकि हमारा विस्तारित मोड TextAppearance
है TextAppearance.Design.CollapsingToolbar.Expanded
।
यदि आप उन सभी के ऊपर हमारे सभी उदाहरणों का अवलोकन करते हैं , तो फ़ॉन्ट के REGULAR संस्करण का उपयोग करता है जो यह कहना सुरक्षित है कि Roboto regular
जब तक आपके पास विशिष्ट आवश्यकताएं नहीं हैं, तब तक कार्य करेंगे।
यह फोंट डाउनलोड करने के लिए बहुत अधिक काम हो सकता है क्यों एक पुस्तकालय का उपयोग न करें जिसमें सभी आवश्यक रोबोटो फोंट हैं? तो मैं Roboto उदा टाइपकर्ता के लिए एक सुलेख पुस्तकालय का परिचय ।
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 example
collapsing_toolbar.apply {
setCollapsedTitleTypeface(TyperRoboto.ROBOTO_REGULAR)
setExpandedTitleTypeface(TyperRoboto.ROBOTO_REGULAR)
}
यह 2019 का अपडेट है क्योंकि टायपर लाइब्रेरी अपडेटेड है! मैं पुस्तकालय का लेखक भी हूं।
आप नए सार्वजनिक तरीकों का उपयोग कर सकते हैं CollapsingToolbarLayout
, जैसे कि टूटे हुए और विस्तारित शीर्षक के लिए टाइपफेस सेट करने के लिए:
final Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/FrutigerLTStd-Light.otf");
collapsingToolbar.setCollapsedTitleTypeface(tf);
collapsingToolbar.setExpandedTitleTypeface(tf);
ऐसा लगता है कि डिज़ाइन सपोर्ट लाइब्रेरी 23.1.0 में जोड़ा गया है, और यह बहुत ही स्वागत योग्य है।
setTitle(String)
पर विधि का उपयोग कर सकते हैं CollapsingToolbarLayout
।
आप ऐसा कुछ कर सकते हैं:
mCollapsingToolbarLayout.setTitle(getTitle());
mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar);
mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar);
अनुरूप पाठ शैली हो सकती है:
<style name="ExpandedAppBar" parent="@android:style/TextAppearance.Medium">
<item name="android:textSize">28sp</item>
<item name="android:textColor">#000</item>
<item name="android:textStyle">bold</item>
</style>
<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>
संदर्भ के लिए यहां भी देखें
Toolbar.setTitleTextColor()
या app:titleTextColor
की Toolbar
जब में संलग्न नहीं करता परिवर्तन उपकरण पट्टी के शीर्षक का रंगCollapsingToolbarLayout
CollapsingToolbarLayout toolbar_layout =findViewById(R.id.toolbar_layout); toolbar_layout.setExpandedTitleColor(Color.BLACK);
mCollapsingToolbar.setTitle(getTitle());
mCollapsingToolbar.setExpandedTitleTextAppearance(R.style.ExpandedAppBar);
mCollapsingToolbar.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar);
<style name="ExpandedAppBar" parent="@android:style/TextAppearance.Medium">
<item name="android:textSize">28sp</item>
<item name="android:textColor">#000</item>
<item name="android:textStyle">bold</item>
</style>
<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>
<style name="ExpandedAppBarPlus1" parent="@android:style/TextAppearance.Medium">
<item name="android:textSize">28.5sp</item>
<item name="android:textColor">#000</item>
<item name="android:textStyle">bold</item>
</style>
<style name="CollapsedAppBarPlus1" parent="@android:style/TextAppearance.Medium">
<item name="android:textSize">24.5sp</item>
<item name="android:textColor">@color/white</item>
<item name="android:textStyle">normal</item>
</style>
यहाँ संदर्भ CollapsingToolbarLayout सेटटाइट ठीक से काम नहीं करता है
यहां सभी उत्तरों को जोड़ने के लिए, यह मेरे लिए xml में काम नहीं करता था, चाहे मैं कोई भी आवेदन करने की कोशिश करूं, AppTheme में, शैलियों में संदर्भित। मैं वर्तमान में समर्थन पुस्तकालय 27.1.1 का उपयोग कर रहा हूं
यह केवल कार्यक्रमबद्ध रूप से काम करता था।
Typeface typeface = ResourcesCompat.getFont(this, R.font.my_custom_font);
collapsingToolbarLayout.setCollapsedTitleTypeface(typeface);
collapsingToolbarLayout.setExpandedTitleTypeface(typeface);
ऐसा लगता है कि मेरे पास समाधान है:
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) {
}
}
कोड यहाँ है
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
app:expandedTitleTextAppearance="@style/Toolbar.TitleText"
app:collapsedTitleTextAppearance="@style/Toolbar.TitleText"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
CollapsingToolbarLayout लेआउट में इन कोड लाइनों को जोड़ें
app:expandedTitleTextAppearance="@style/Toolbar.TitleText"
app:collapsedTitleTextAppearance="@style/Toolbar.TitleText"
और जो कोड नीचे दिया गया है, वह style.xml में है
<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:textSize">16sp</item>
</style>
फ़ॉन्ट आकार या माता-पिता बदलें।
<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>
अब आप फोंट को संसाधन https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html के रूप में परिभाषित कर सकते हैं
res-> font->
फ़ोल्डर में रखें
<?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)