如何使所有设备的折叠工具栏为正方形?

时间:2018-08-20 18:18:54

标签: android xml material-design

我得到了折叠式工具栏。它内部的图像必须是正方形的,但在具有大屏幕的设备上则不是。如何设置图像,使其始终保持方形,并使图像全宽和高高?

同时必须折叠工具栏,无法固定和冻结它。

活动代码。

<?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:fitsSystemWindows="true">
    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:background="@android:color/holo_blue_bright"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/friend_activity_image"
                android:layout_width="match_parent"
                android:layout_height="220dp"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                android:contentDescription="Default Avatar"
                android:fitsSystemWindows="true"
                android:src="@drawable/avatar"
                app:layout_collapseMode="parallax" />

            <LinearLayout
                android:id="@+id/meta_bar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:alpha="0.8"
                android:background="@android:color/black"
                android:orientation="vertical"
                android:paddingBottom="16dp"
                android:paddingLeft="16dp"
                android:paddingRight="16dp"
                android:paddingTop="16dp">

                <TextView
                    android:id="@+id/friend_activity_tv_name"
                    style="?android:attr/textAppearanceLarge"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:paddingBottom="0dp"
                    android:text="NAME"
                    android:textColor="#fff"
                    android:textSize="24sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/friend_activity_tv_age"
                        style="?android:attr/textAppearanceSmall"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="AGE"
                        android:textColor="#8fff"
                        android:textSize="16sp" />

                    <TextView
                        android:id="@+id/friend_activity_tv_country"
                        style="?android:attr/textAppearanceLarge"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="8dp"
                        android:paddingBottom="0dp"
                        android:text="COUNTRY"
                        android:textColor="#8fff"
                        android:textSize="16sp" />
                </LinearLayout>

            </LinearLayout>

            <!--android:src="@drawable/default_avatar"-->
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin" />
        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView

        android:id="@+id/nested_scroll_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">



            <android.support.v7.widget.CardView
                android:id="@+id/friend_activity_cardview_about"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp">

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/recycler_list_friendDescription"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
                </android.support.v7.widget.RecyclerView>


            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView
                android:id="@+id/friend_activity_cardview_buttons_block"
                android:layout_below="@+id/friend_activity_cardview_about"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="8dp">

                <LinearLayout
                    android:id="@+id/my_profile_linear_likers_visitors"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">


                    <Button
                        android:id="@+id/friend_activity_btn_add_friend"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:backgroundTint="@android:color/white"
                        android:paddingLeft="25dp"
                        android:paddingRight="25dp"
                        android:text="+ ADD FRIEND"
                        android:textColor="@color/colorPrimary" />


                    <Button
                        android:id="@+id/friend_activity_btn_start_chat"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:backgroundTint="@android:color/white"
                        android:paddingLeft="25dp"
                        android:paddingRight="25dp"
                        android:text="WRITE MESSAGE"
                        android:textColor="@color/colorPrimary" />


                </LinearLayout>
            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView
                android:id="@+id/friend_activity_cardview_list"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/friend_activity_cardview_buttons_block"
                android:layout_marginBottom="8dp">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">

                    <Button
                        android:id="@+id/settings_image_btn"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:backgroundTint="@android:color/white"
                        android:paddingLeft="25dp"
                        android:paddingRight="25dp"
                        android:text="@string/check_your_search_parameters"
                        android:textColor="@color/colorPrimary" />

                    <TextView
                        android:id="@+id/my_profile_tv_also_like"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/settings_image_btn"
                        android:layout_gravity="left"
                        android:layout_marginLeft="8dp"
                        android:layout_marginTop="8dp"
                        android:text="@string/you_may_also_like_them"
                        android:textSize="24sp"
                        android:textStyle="bold" />

                    <android.support.v7.widget.RecyclerView
                        android:id="@+id/my_profile_recyler"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_below="@+id/my_profile_tv_also_like" />
                </LinearLayout>

            </android.support.v7.widget.CardView>

        </RelativeLayout>

    </android.support.v4.widget.NestedScrollView>


    <android.support.design.widget.FloatingActionButton
        android:id="@+id/friend_activity_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:src="@drawable/ic_favorite_black_24dp"
        app:fabSize="normal"
        app:layout_anchor="@id/app_bar_layout"
        app:layout_anchorGravity="bottom|end" />

</android.support.design.widget.CoordinatorLayout>

1 个答案:

答案 0 :(得分:0)

您必须以编程方式在onCreate内设置高度

Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;

        AppBarLayout abl=findViewById(R.id.appbar);
        CoordinatorLayout.LayoutParams ap=(CoordinatorLayout.LayoutParams) abl.getLayoutParams();
        ap.height=width;

        abl.setLayoutParams(ap);

在AppBarLayout的资源xml中 您还必须设置

android:fitsSystemWindows="false"

否则,除非您想从正方形开始,否则正方形将从最顶部开始(包括状态栏电池,通知等)。