天天看点

CollapsingToolbarLayout使用的一些注意点

原创不易,转发请注明转发,并附上原文地址:http://blog.csdn.net/z736232402/article/details/51531231

先上图:

CollapsingToolbarLayout使用的一些注意点

这是我遇到的第一个坑。跟着网上一大堆的教程,设置一大堆后,发现toolbar下的navigationIcon居然向上偏移了,刚开始以为是图标偏移,后来设置了toolbar的背景色后发现,是整个toolbar上移了,找了很久后,想到我的项目一直用的都是沉浸式,用fitsSystemWindows适应,想网上的例子应该不会设置这个,就把这个设置为false,勉强解决了点,但是,还是有点问题

CollapsingToolbarLayout使用的一些注意点

上拉的时候,发现到了原地方后还能上拉,又变成原来的样子了,不一样的是,图标和文字一样高了。

然后想了下,跟之前的沉浸式没设置fitsSystemWindows一样的,于是,给AppBarLayout设置了下fitsSystemWindows为true就行了,CoordinatorLayout要不要设置无所谓,但是如果只设置了CoordinatorLayout,没设置AppBarLayout,顶部会多出一个状态栏高度的空格。然后,就是接下来的问题了。

CollapsingToolbarLayout使用的一些注意点

其他都ok就是顶部状态栏是主题色的,不是图片的颜色,拉动的时候,发现中间是有的。找了好久,后来在copy了别人的代码过来看可以的时候,发现,imageview要也要设置fitsSystemWindows为true,问题终于解决了。上最后成功的图片。

CollapsingToolbarLayout使用的一些注意点
CollapsingToolbarLayout使用的一些注意点

当然,这些的前提下是设置了沉浸式。还有就是toolbar的app:layout_collapseMode="pin",如果没设置为pin,toolbar就也会滚上去。

public class MainActivity extends AppCompatActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initWindow();
    }

    @TargetApi(19)
    private void initWindow()
    {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            final Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }
    }
}      

最后,附上点代码吧

这是xml布局

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            app:title="hello"

            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_collapseMode="parallax"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                android:src="@mipmap/bg"
                android:transitionName="mu"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                app:navigationIcon="@drawable/sl_go_back"
                app:collapseIcon="@drawable/sl_go_back"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">


        <android.support.v7.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            android:paddingLeft="8dp"
            android:paddingTop="8dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"

            app:showDividers="middle"
            >
            <!--<android.support.v7.widget.Toolbar-->
            <!--app:layout_collapseMode="pin"-->
            <!--app:navigationIcon="@drawable/sl_go_back"-->
            <!--android:background="@color/theme_color"-->
            <!--app:titleTextColor="@color/material_white_normal"-->
            <!--android:titleTextColor="@color/material_white_normal"-->
            <!--android:layout_width="match_parent"-->
            <!--android:layout_height="?attr/actionBarSize"-->
            <!--&gt;-->

            <!--</android.support.v7.widget.Toolbar>-->
            <android.support.v7.widget.LinearLayoutCompat
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="帐号"/>

                <TextView
                    android:id="@+id/tv_account"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </android.support.v7.widget.LinearLayoutCompat>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="电话"/>

                <TextView
                    android:id="@+id/tv_phone"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="邮箱"/>

                <TextView
                    android:id="@+id/tv_mail"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="昵称"/>

                <TextView
                    android:id="@+id/tv_nickname"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="性别"/>

                <TextView
                    android:id="@+id/tv_sex"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="生日"/>

                <TextView
                    android:id="@+id/tv_birth"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="擅长"/>

                <TextView
                    android:id="@+id/tv_occuption"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="学校"/>

                <TextView
                    android:id="@+id/tv_school"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="公司"/>

                <TextView
                    android:id="@+id/tv_company"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>

            <LinearLayout
                style="@style/profile_layout_style"
                >

                <TextView
                    style="@style/profile_text_info_style"
                    android:text="个人说明"/>

                <TextView
                    android:id="@+id/tv_caption"
                    style="@style/profile_text_edit_style"
                    android:text="15948544852"/>
            </LinearLayout>
        </android.support.v7.widget.LinearLayoutCompat>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>      

style啥的,也顺便上传了好了

<style name="profile_layout_style">
    <item name="android:paddingLeft">8dp</item>
    <item name="android:paddingTop">8dp</item>
    <item name="android:paddingBottom">8dp</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:orientation">horizontal</item>
    <item name="android:clickable">true</item>
    <item name="android:background">?android:attr/selectableItemBackground</item>
</style>

<style name="profile_text_style">
    <item name="android:padding">8dp</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textSize">16sp</item>
</style>

<style name="profile_text_info_style" parent="profile_text_style">
</style>

<style name="profile_text_edit_style" parent="profile_text_style">
    <item name="android:drawablePadding">8dp</item>
    <item name="android:layout_weight">1</item>
    <item name="android:gravity">right|center</item>
</style>      

主题将fitsSystemWindows设置为false

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