CollapsingToolbarLayout工具栏位于状态栏中

时间:2015-10-21 09:43:33

标签: android android-layout material-design android-collapsingtoolbarlayout

我按照本教程了解如何实现折叠工具栏布局Link Here
我成功地得到了我想要的结果 经过一些调试后,我发现我的操作栏搜索按钮位于图像内部的图像上方 我正在做的是将搜索图标放在图像中,就像任何其他拼贴工具栏布局一样 并且图像应该占据顶部(colorPrimaryDark)。

enter image description here

这是我的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:background="#FAFAFA">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbarLayout"
        android:layout_width="match_parent"
        android:layout_height="270dp"

        >

        <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="28dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/img_content"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/gameover2"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax" />

            <include
                android:id="@+id/app_bar"
                layout="@layout/app_bar" />

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

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

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:paddingTop="16dp">

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="16dp">

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

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="5dp"
                        android:gravity="center"
                        android:text="@string/coordinatar_card"
                        android:textAppearance="@style/TextAppearance.AppCompat.Title"
                        android:textIsSelectable="false"
                        android:textSize="25sp" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/coordinatar_card_desc"
                        android:textSize="18sp" />

                </LinearLayout>

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

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="16dp">

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

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="5dp"
                        android:gravity="center"
                        android:text="@string/appBarLayout_card"
                        android:textAppearance="@style/TextAppearance.AppCompat.Title"
                        android:textIsSelectable="false"
                        android:textSize="25sp" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/appBarLayout_card_desc"
                        android:textSize="18sp" />

                </LinearLayout>

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

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="16dp">

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

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="5dp"
                        android:gravity="center"
                        android:text="@string/collapsing_toolbar_card"
                        android:textAppearance="@style/TextAppearance.AppCompat.Title"
                        android:textIsSelectable="false"
                        android:textSize="25sp" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/collapsing_toolbar_card_desc"
                        android:textSize="18sp" />

                </LinearLayout>

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

        </LinearLayout>

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

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:clickable="true"
        android:src="@drawable/ic_search"
        app:layout_anchor="@+id/appbarLayout"
        app:layout_anchorGravity="bottom|right|end" />

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

我的活动..

public class selectedPOI extends AppCompatActivity {

    private RecyclerView recyclerView;
    private JuanAdapter adapter;
    CollapsingToolbarLayout collapsingToolbar;
    int mutedColor = R.attr.colorPrimary;
    FloatingActionButton fab;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_selected_poi);
        Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
        collapsingToolbar.setTitle("Collapsing Toolbar");
        fab=(FloatingActionButton)findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, "You clicked on the fab", Snackbar.LENGTH_SHORT).show();
            }
        });


    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_search, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == android.R.id.home) {
            NavUtils.navigateUpFromSameTask(this);
        }
        return super.onOptionsItemSelected(item);
    }


}

编辑:
在API 21或更高版本上,ActionBar位于图像上方 但在API低于API21时,它的工作正常。

1 个答案:

答案 0 :(得分:1)

好的,我认为你的这个问题可以解决两个问题。 1.您可以在v21样式中将其添加到样式<item name="android:fitsSystemWindows">true</item>中。这样,您的应用的每个屏幕都只会调整为适合您应用的区域。

  1. 其他方式可以通过代码,试试这个

    toolbar.setPadding(0,getStatusBarHeight(this),0,0); 这里工具栏是您的折叠工具栏。对lollypop进行此检查,如果是,则将顶部填充添加到工具栏中,与状态栏的高度相同。

  2. public static int getStatusBarHeight(Context ctx) {
            int result = 0;
            int resourceId = ctx.getResources().getIdentifier("status_bar_height", "dimen","android");
    
    
            if (resourceId > 0) {
                result = ctx.getResources().getDimensionPixelSize(resourceId);
            }
            return result;
        }
    

    让我们知道它是怎么回事,我认为它应该为你做。