android material design之toolbar,ExitUntilCollapsed(七)

来源:互联网 发布:shop 源码下载 编辑:程序博客网 时间:2024/06/06 02:35

我的项目源码托管地址:点击打开我的项目源码地址


动态更改toolbar右上图标显示,先看一下效果


先看一下activity的代码

package com.fanyafeng.materialdesign.activity;import android.net.Uri;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Toast;import com.facebook.drawee.view.SimpleDraweeView;import com.fanyafeng.materialdesign.BaseActivity;import com.fanyafeng.materialdesign.R;public class ToolbarExitUntilCollapsedActivity extends BaseActivity {    private SimpleDraweeView sdvCollapsedTop;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_toolbar_exit_until_collapsed);        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)                        .setAction("Action", null).show();            }        });        initView();        initData();    }    private void initView() {        sdvCollapsedTop = (SimpleDraweeView) findViewById(R.id.sdvCollapsedTop);        sdvCollapsedTop.setImageURI(Uri.parse("http://img0.imgtn.bdimg.com/it/u=4136016998,4074341228&fm=21&gp=0.jpg"));    }    private void initData() {    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.menu_collapsed, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        int id = item.getItemId();        switch (id) {            case R.id.collasped1:                toolbar.getMenu().getItem(1).setVisible(false);                break;            case R.id.collasped2:                toolbar.getMenu().getItem(1).setVisible(true);                break;            case R.id.collasped3:                toolbar.getMenu().getItem(0).setVisible(false);                break;            case R.id.collasped4:                toolbar.getMenu().getItem(0).setVisible(true);                break;        }        return super.onOptionsItemSelected(item);    }}
这里需要大家注意的是位置问题,即使设置visible控件还是占着位置的

在来看两个xml(非menu)

<?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="false"    tools:context="com.fanyafeng.materialdesign.activity.ToolbarExitUntilCollapsedActivity">    <android.support.design.widget.AppBarLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:theme="@style/AppTheme.AppBarOverlay">        <!--android:layout_height="?attr/actionBarSize"-->        <android.support.design.widget.CollapsingToolbarLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            app:contentScrim="#30469b"            app:expandedTitleMarginStart="20dp"            app:layout_scrollFlags="scroll|exitUntilCollapsed">            <com.facebook.drawee.view.SimpleDraweeView                android:id="@+id/sdvCollapsedTop"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:scaleType="centerCrop"                app:layout_collapseMode="parallax"                app:layout_collapseParallaxMultiplier="0.7"                app:viewAspectRatio="1.605" />            <android.support.v7.widget.Toolbar                android:id="@+id/toolbar"                android:layout_width="match_parent"                android:layout_height="?attr/actionBarSize"                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"                android:theme="@style/AppTheme.ActionBar"                app:layout_collapseMode="pin" />        </android.support.design.widget.CollapsingToolbarLayout>    </android.support.design.widget.AppBarLayout>    <include layout="@layout/content_toolbar_exit_until_collapsed" />    <android.support.design.widget.FloatingActionButton        android:id="@+id/fab"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="bottom|end"        android:layout_margin="@dimen/fab_margin"        android:src="@android:drawable/ic_dialog_email" /></android.support.design.widget.CoordinatorLayout>

其中颜色还可以用?attr/XXX来进行表示

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.NestedScrollView 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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    tools:context="com.fanyafeng.materialdesign.activity.ToolbarExitUntilCollapsedActivity"    tools:showIn="@layout/activity_toolbar_exit_until_collapsed">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <android.support.v7.widget.CardView            android:layout_width="match_parent"            android:layout_height="300dp"            android:layout_gravity="center"            android:layout_margin="5dp"            android:foreground="?android:attr/selectableItemBackground"            android:paddingBottom="5dp"            app:cardBackgroundColor="@android:color/white"            app:cardCornerRadius="8dp"            app:cardElevation="4dp">            <TextView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:text="测试"                android:textSize="18sp" />        </android.support.v7.widget.CardView>        <android.support.v7.widget.CardView            android:layout_width="match_parent"            android:layout_height="300dp"            android:layout_gravity="center"            android:layout_margin="5dp"            android:foreground="?android:attr/selectableItemBackground"            android:paddingBottom="5dp"            app:cardBackgroundColor="@android:color/white"            app:cardCornerRadius="8dp"            app:cardElevation="4dp">            <TextView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:text="测试"                android:textSize="18sp" />        </android.support.v7.widget.CardView>        <android.support.v7.widget.CardView            android:layout_width="match_parent"            android:layout_height="300dp"            android:layout_gravity="center"            android:layout_margin="5dp"            android:foreground="?android:attr/selectableItemBackground"            android:paddingBottom="5dp"            app:cardBackgroundColor="@android:color/white"            app:cardCornerRadius="8dp"            app:cardElevation="4dp">            <TextView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:text="测试"                android:textSize="18sp" />        </android.support.v7.widget.CardView>        <android.support.v7.widget.CardView            android:layout_width="match_parent"            android:layout_height="300dp"            android:layout_gravity="center"            android:layout_margin="5dp"            android:foreground="?android:attr/selectableItemBackground"            android:paddingBottom="5dp"            app:cardBackgroundColor="@android:color/white"            app:cardCornerRadius="8dp"            app:cardElevation="4dp">            <TextView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:text="测试"                android:textSize="18sp" />        </android.support.v7.widget.CardView>    </LinearLayout></android.support.v4.widget.NestedScrollView>

再来看一下menu的写法

<menu 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"    tools:context="com.fanyafeng.materialdesign.BaseActivity">    <item        android:id="@+id/collaspedActionSend"        android:icon="@drawable/send"        android:orderInCategory="100"        android:title="send"        app:showAsAction="ifRoom">        <menu>            <item                android:id="@+id/collasped1"                android:orderInCategory="100"                android:title="隐藏add" />            <item                android:id="@+id/collasped2"                android:orderInCategory="100"                android:title="显示add" />        </menu>    </item>    <item        android:id="@+id/collaspedActionAdd"        android:icon="@drawable/add"        android:orderInCategory="100"        android:title="add"        app:showAsAction="ifRoom">        <menu>            <item                android:id="@+id/collasped3"                android:orderInCategory="100"                android:title="隐藏send" />            <item                android:id="@+id/collasped4"                android:orderInCategory="100"                android:title="显示send" />        </menu>    </item></menu>

这里的menu的用法和actionbar的用法差不多,但是是md风格,不难,就不细讲了



0 0
原创粉丝点击