在 android 工作室中隐藏滚动 activity 标题
Hiding Scrolling activity title in android studio
我创建了一个滚动 activity。
我想隐藏此 activity 标题(Banglalink 最新优惠)。
但是
我想在这个阶段显示 activity 标题(Banglalink 最新优惠)。
可以吗?
如果是,如何?
最好将其转换为普通 activity(将滚动视图作为 child),从隐藏操作栏开始(使用下面的 hide() 调用(将其放在 onCreate 中()).
然后将彩色背景放在屏幕顶部的滚动视图中。
最后,您可以通过添加水平滚动 listener/observer.
以编程方式在隐藏标题(和操作栏)之间切换,但在需要时显示 header 背景(反之亦然)
侦听器将根据用户向下滚动的距离切换操作栏和 header 视图。
例如:
在 onStart() 中添加观察者:
hsv.getViewTreeObserver().addOnScrollChangedListener(
new ViewTreeObserver.OnScrollChangedListener()
{ @Override public void onScrollChanged()
{
Log.i(TAG,"scroll:"+hsv.getScrollX());}});
// todo adjust scrollx value to decide on hide or show call:
if (hsv.getScrollX() > 100)
getActionBar().show();
mHeaderLayoutView.setVisibility(View.GONE);
else
getActionBar().hide();
mHeaderLayoutView.setVisibily(View.VISIBLE)
...
注意:hsv 是 HorizontalScrollView 作品。
请注意,如果您正在使用支持库(例如,您 activity class 扩展了 AppCompatActivity),代码将更改为:
getSupportActionBar().hide();
我不确定 getScrollX 是以像素为单位还是以 dp 为单位(有待您研究)。
希望对您有所帮助!
<resources>
<dimen name="app_bar_height">180dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="text_margin">16dp</dimen>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="appbar_padding_top">8dp</dimen>
</resources>
这必须是您的 dimens.xml 文件。如果将 app_bar_height 减小到 120dp 或关闭...文本将不可见。崩了不知道怎么拉回来
从 onCreate()
调用此方法
initCollapsingToolbar();
定义方法
private void initCollapsingToolbar() {
final CollapsingToolbarLayout collapsingToolbar =
(CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
collapsingToolbar.setTitle(" ");
AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.app_bar);
appBarLayout.setExpanded(true);
// hiding & showing the title when toolbar expanded & collapsed
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
boolean isShow = false;
int scrollRange = -1;
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (scrollRange == -1) {
scrollRange = appBarLayout.getTotalScrollRange();
}
if (scrollRange + verticalOffset == 0) {
collapsingToolbar.setTitle("Your app title");
isShow = true;
} else if (isShow) {
collapsingToolbar.setTitle(" ");
isShow = false;
}
}
});
}
这对我有用:
CollapsingToolbarLayout toolbarLayout = (CollapsingToolbarLayout)
findViewById(R.id.toolbar_layout);
toolbarLayout.setTitle(" ");
您必须删除 XML 中的行 android:theme="@style/AppTheme.AppBarOverlay"
。删除标题后,标题将转到后台。所以你可以隐藏 activity 的标题。例如,您可以放置一个占位符来隐藏它。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="220dp"
android:fitsSystemWindows="true"
>
<!--android:theme="@style/AppTheme.AppBarOverlay"-->
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="pin"
app:srcCompat="@drawable/place_holder" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="6dp"
android:layout_marginStart="6dp"
android:layout_marginTop="8dp"
android:src="@mipmap/next"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_display_shop" />
</android.support.design.widget.CoordinatorLayout>
有点晚了,但我认为这可能有助于寻找解决方案的人,您只需将文本颜色设置为透明即可。
只需将以下样式添加到您的 styles.xml:
<style name="ToolBarTheme">
<item name="android:textColor">@android:color/transparent</item>
</style>
并将以下属性添加到您的 CollapsingToolbarLayout:
app:expandedTitleTextAppearance="@style/ToolBarTheme"
只需将此行添加到 xml 文件中的 CollapsingToolbarLayout:
app:titleEnabled="false"
您可以使用 supportActionBar 并使用“”(字符串空)更改标题
setSupportActionBar(findViewById(R.id.toolbar))
findViewById<CollapsingToolbarLayout>(R.id.toolbar_layout).title = title
supportActionBar!!.title=""
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
或者您可以在 findViewById
中更改
findViewById<CollapsingToolbarLayout>(R.id.toolbar_layout).title = title
我创建了一个滚动 activity。
我想隐藏此 activity 标题(Banglalink 最新优惠)。
但是
我想在这个阶段显示 activity 标题(Banglalink 最新优惠)。
可以吗? 如果是,如何?
最好将其转换为普通 activity(将滚动视图作为 child),从隐藏操作栏开始(使用下面的 hide() 调用(将其放在 onCreate 中()).
然后将彩色背景放在屏幕顶部的滚动视图中。 最后,您可以通过添加水平滚动 listener/observer.
以编程方式在隐藏标题(和操作栏)之间切换,但在需要时显示 header 背景(反之亦然)侦听器将根据用户向下滚动的距离切换操作栏和 header 视图。
例如:
在 onStart() 中添加观察者:
hsv.getViewTreeObserver().addOnScrollChangedListener(
new ViewTreeObserver.OnScrollChangedListener()
{ @Override public void onScrollChanged()
{
Log.i(TAG,"scroll:"+hsv.getScrollX());}});
// todo adjust scrollx value to decide on hide or show call:
if (hsv.getScrollX() > 100)
getActionBar().show();
mHeaderLayoutView.setVisibility(View.GONE);
else
getActionBar().hide();
mHeaderLayoutView.setVisibily(View.VISIBLE)
...
注意:hsv 是 HorizontalScrollView 作品。
请注意,如果您正在使用支持库(例如,您 activity class 扩展了 AppCompatActivity),代码将更改为:
getSupportActionBar().hide();
我不确定 getScrollX 是以像素为单位还是以 dp 为单位(有待您研究)。
希望对您有所帮助!
<resources>
<dimen name="app_bar_height">180dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="text_margin">16dp</dimen>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="appbar_padding_top">8dp</dimen>
</resources>
这必须是您的 dimens.xml 文件。如果将 app_bar_height 减小到 120dp 或关闭...文本将不可见。崩了不知道怎么拉回来
从 onCreate()
initCollapsingToolbar();
定义方法
private void initCollapsingToolbar() {
final CollapsingToolbarLayout collapsingToolbar =
(CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
collapsingToolbar.setTitle(" ");
AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.app_bar);
appBarLayout.setExpanded(true);
// hiding & showing the title when toolbar expanded & collapsed
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
boolean isShow = false;
int scrollRange = -1;
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (scrollRange == -1) {
scrollRange = appBarLayout.getTotalScrollRange();
}
if (scrollRange + verticalOffset == 0) {
collapsingToolbar.setTitle("Your app title");
isShow = true;
} else if (isShow) {
collapsingToolbar.setTitle(" ");
isShow = false;
}
}
});
}
这对我有用:
CollapsingToolbarLayout toolbarLayout = (CollapsingToolbarLayout)
findViewById(R.id.toolbar_layout);
toolbarLayout.setTitle(" ");
您必须删除 XML 中的行 android:theme="@style/AppTheme.AppBarOverlay"
。删除标题后,标题将转到后台。所以你可以隐藏 activity 的标题。例如,您可以放置一个占位符来隐藏它。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="220dp"
android:fitsSystemWindows="true"
>
<!--android:theme="@style/AppTheme.AppBarOverlay"-->
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="pin"
app:srcCompat="@drawable/place_holder" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="6dp"
android:layout_marginStart="6dp"
android:layout_marginTop="8dp"
android:src="@mipmap/next"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_display_shop" />
</android.support.design.widget.CoordinatorLayout>
有点晚了,但我认为这可能有助于寻找解决方案的人,您只需将文本颜色设置为透明即可。 只需将以下样式添加到您的 styles.xml:
<style name="ToolBarTheme">
<item name="android:textColor">@android:color/transparent</item>
</style>
并将以下属性添加到您的 CollapsingToolbarLayout:
app:expandedTitleTextAppearance="@style/ToolBarTheme"
只需将此行添加到 xml 文件中的 CollapsingToolbarLayout:
app:titleEnabled="false"
您可以使用 supportActionBar 并使用“”(字符串空)更改标题
setSupportActionBar(findViewById(R.id.toolbar))
findViewById<CollapsingToolbarLayout>(R.id.toolbar_layout).title = title
supportActionBar!!.title=""
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
或者您可以在 findViewById
中更改findViewById<CollapsingToolbarLayout>(R.id.toolbar_layout).title = title