android Collapsingtoolbarlayout 在需要时显示全文
android Collapsingtoolbarlayout show full text when needed
您好,我有一个使用 Collapsingtoolbarlayout 的 android 应用程序。 Collapsingtoolbarlayout 的标题将是之前文章的标题 activity/fragment(我怎样才能使 Collapsingtoolbarlayout 在需要时显示完整标题(调整字体大小,增加 space)?
目前,我正在使用这些代码。如何修改代码以正确显示标题?非常感谢任何帮助。谢谢
Activity activity = this.getActivity();
CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout);
if (appBarLayout != null) {
appBarLayout.setTitle(topStory.getTitle());
appBarLayout.setExpandedTitleTextAppearance(View.NO_ID);
appBarLayout.setCollapsedTitleTypeface(Typeface.SANS_SERIF);
appBarLayout.setTitleEnabled(true);
}
要更改文本大小,您需要将此添加到 CollapsingToolbarLayout:
app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title">
或在Java中:
mCollapsingToolbarLayout.setTitle(getTitle());
mCollapsingToolbarLayout.setExpandedTitleTextAppearance(android.R.stlye.);
mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(android.R.style.);
要动态调整大小以适应文章布局,您有两种选择:
您将 textSize 设置为一个大小,这将允许每个可能的标题完整显示(如果您已经知道每个标题)
或者您检查标题有多少个字符并更改 CollapsingToolbarLayout 的 textAppeareance
我简直不敢相信,四年后我仍在努力让 CollapsingToolbarLayout
处理这个问题。具体来说,我们需要展开后的高度 CollapsingToolbarLayout
来包裹展开后标题的大小,而不包含任何包含的图像或其他内容。
为了实现这一点,我不得不在 CollapsingToolbarLayout
中创建一个伪造的 TextView
来模仿扩展标题的外观和内容,以便 CollapsingToolbarLayout
计算其扩展基于它的高度。此 TextView
保持不可见,因此我们仍然可以在其折叠和展开标题之间使用 CollapsingToolbarLayout
提供的动画。
这里是 XML 供您使用:
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:liftOnScroll="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:collapsedTitleTextAppearance="@style/OmegaHeadingMedium"
app:expandedTitleGravity="bottom"
app:expandedTitleMarginBottom="@dimen/spacer_small"
app:expandedTitleMarginEnd="@dimen/spacer_grid"
app:expandedTitleMarginStart="@dimen/spacer_grid"
app:expandedTitleMarginTop="?actionBarSize"
app:expandedTitleTextAppearance="@style/OmegaHeadingLarge"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:maxLines="3"
tools:title="Title">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
app:layout_collapseMode="pin"
app:titleMarginEnd="@dimen/spacer_small" />
<!-- This title is used to dynamically calculate the height
of the collapsing toolbar. Styling should match that of
the expanded title appearance. -->
<TextView
android:id="@+id/txt_fake_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/spacer_grid"
android:layout_marginTop="?actionBarSize"
android:layout_marginBottom="@dimen/spacer_xsmall"
android:textAppearance="@style/OmegaHeadingLarge"
android:visibility="invisible"
tools:text="Really really really really really really really really long title"
tools:visibility="visible" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
(请记住 XML 中的样式、尺寸和其他属性仅用于演示)
下面是您将如何在 Kotlin 中使用它:
collapsing_toolbar.title = "Title"
txt_fake_title.text = "Title"
您好,我有一个使用 Collapsingtoolbarlayout 的 android 应用程序。 Collapsingtoolbarlayout 的标题将是之前文章的标题 activity/fragment(我怎样才能使 Collapsingtoolbarlayout 在需要时显示完整标题(调整字体大小,增加 space)?
目前,我正在使用这些代码。如何修改代码以正确显示标题?非常感谢任何帮助。谢谢
Activity activity = this.getActivity();
CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout);
if (appBarLayout != null) {
appBarLayout.setTitle(topStory.getTitle());
appBarLayout.setExpandedTitleTextAppearance(View.NO_ID);
appBarLayout.setCollapsedTitleTypeface(Typeface.SANS_SERIF);
appBarLayout.setTitleEnabled(true);
}
要更改文本大小,您需要将此添加到 CollapsingToolbarLayout:
app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title">
或在Java中:
mCollapsingToolbarLayout.setTitle(getTitle());
mCollapsingToolbarLayout.setExpandedTitleTextAppearance(android.R.stlye.);
mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(android.R.style.);
要动态调整大小以适应文章布局,您有两种选择: 您将 textSize 设置为一个大小,这将允许每个可能的标题完整显示(如果您已经知道每个标题)
或者您检查标题有多少个字符并更改 CollapsingToolbarLayout 的 textAppeareance
我简直不敢相信,四年后我仍在努力让 CollapsingToolbarLayout
处理这个问题。具体来说,我们需要展开后的高度 CollapsingToolbarLayout
来包裹展开后标题的大小,而不包含任何包含的图像或其他内容。
为了实现这一点,我不得不在 CollapsingToolbarLayout
中创建一个伪造的 TextView
来模仿扩展标题的外观和内容,以便 CollapsingToolbarLayout
计算其扩展基于它的高度。此 TextView
保持不可见,因此我们仍然可以在其折叠和展开标题之间使用 CollapsingToolbarLayout
提供的动画。
这里是 XML 供您使用:
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:liftOnScroll="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:collapsedTitleTextAppearance="@style/OmegaHeadingMedium"
app:expandedTitleGravity="bottom"
app:expandedTitleMarginBottom="@dimen/spacer_small"
app:expandedTitleMarginEnd="@dimen/spacer_grid"
app:expandedTitleMarginStart="@dimen/spacer_grid"
app:expandedTitleMarginTop="?actionBarSize"
app:expandedTitleTextAppearance="@style/OmegaHeadingLarge"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:maxLines="3"
tools:title="Title">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
app:layout_collapseMode="pin"
app:titleMarginEnd="@dimen/spacer_small" />
<!-- This title is used to dynamically calculate the height
of the collapsing toolbar. Styling should match that of
the expanded title appearance. -->
<TextView
android:id="@+id/txt_fake_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/spacer_grid"
android:layout_marginTop="?actionBarSize"
android:layout_marginBottom="@dimen/spacer_xsmall"
android:textAppearance="@style/OmegaHeadingLarge"
android:visibility="invisible"
tools:text="Really really really really really really really really long title"
tools:visibility="visible" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
(请记住 XML 中的样式、尺寸和其他属性仅用于演示)
下面是您将如何在 Kotlin 中使用它:
collapsing_toolbar.title = "Title"
txt_fake_title.text = "Title"