在Google提供的控件中,在support-design及v4,v7包中,存在着很多符合MD标准的控件,这里罗列出一些常用的控件

TextInputLayout

这个控件在作为输入框的时候是极其方便及好用的,结合EditText使用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><android.support.design.widget.TextInputLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"app:counterEnabled="true"app:counterMaxLength="10"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入用户名" /></android.support.design.widget.TextInputLayout><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录" /></LinearLayout>

效果

SearchView

搜索功能,位于ActionBar的位置
首先需要编写menu布局

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity"><item android:id="@+id/menu_search"android:orderInCategory="100"app:showAsAction="always"app:actionViewClass="android.support.v7.widget.SearchView"android:title="search"/><item android:id="@+id/menu_share"android:orderInCategory="100"app:showAsAction="ifRoom"android:icon="@android:drawable/ic_menu_share"android:title="share" />
</menu>

然后复写onCreateOptionsMenu()方法

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);MenuItem menuItem = menu.findItem(R.id.menu_search);final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem);//显示搜索框//searchView.setIconified(false);//显示搜索框,且其不能被隐藏searchView.setIconifiedByDefault(false);//显示提交按钮,这里可以获取到id,设置自定义图片ImageView icon = (ImageView) searchView.findViewById(R.id.search_go_btn);icon.setImageResource(R.mipmap.ic_launcher);icon.setVisibility(View.VISIBLE);//设置监听icon.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, searchView.getQuery(), Toast.LENGTH_SHORT).show();}});//获取id,从而设置提示EditText edit = (EditText) searchView.findViewById(R.id.search_src_text);edit.setHint("请输入搜索的内容");searchView.setSubmitButtonEnabled(true);//SearchView还有很多设置监听选项,例如提交监听,文本监听return true;}
}

效果如下:

Toolbar

顶部导航栏。用于显示标题,返回,菜单等,最开始是使用的ActionBar
由于ActionBar的种种使用不便,再加上拓展性差,google后来推出了Toolbar,为了增强其功能,现在还有APPbar可供使用
首先还是要把主题设置为NoActionBar

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style></resources>

然后使用Toolbar布局,由于ToolBar继承自ViewGroup,所以其是一个容器

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"tools:context=".MainActivity"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?attr/colorPrimary"app:logo="@mipmap/ic_launcher"app:navigationIcon="@drawable/abc_ic_ab_back_material"app:subtitle="子标题"app:subtitleTextColor="@android:color/white"app:title="主标题"app:titleTextColor="@color/colorAccent"><!--<TextView--><!--android:layout_width="wrap_content"--><!--android:layout_height="wrap_content"--><!--android:layout_gravity="center"--><!--android:text="这里是标题"/>--></android.support.v7.widget.Toolbar></LinearLayout>

最后设置Toolbar到活动,并设置监听

public class MainActivity extends AppCompatActivity {private Toolbar toolbar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);toolbar.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}
}

测试效果如下

接下来实现Toolbar的隐藏效果
这样的效果实现思路就是Toolbar在上层,后面的布局在下层,后面的布局设置padding,然后再滑动过程中监听滑动距离,设置Toolbar的透明度

interface TranslucentListener {//透明度的回调监听 alpha:0~1void onTranlucent(float alpha);
}

自定义ScrollView,在onScrollChanged()中监听

public class MyScrollView extends ScrollView {private TranslucentListener translucentListener;public void setTranslucentListener(TranslucentListener translucentListener) {this.translucentListener = translucentListener;}public MyScrollView(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);if (translucentListener != null) {Log.d("cj5785", "onScrollChanged");int scrollY = getScrollY();int screen_height = getContext().getResources().getDisplayMetrics().heightPixels;//滑出1/3时候完全透明if (scrollY <= screen_height / 3f) {translucentListener.onTranlucent(1 - scrollY / (screen_height / 3f));}}}
}

最后在活动中回调

public class MainActivity extends AppCompatActivity implements TranslucentListener{private Toolbar toolbar;private MyScrollView scrollView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);toolbar.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});scrollView = findViewById(R.id.scroll_view);scrollView.setTranslucentListener(this);}@Overridepublic void onTranlucent(float alpha) {toolbar.setAlpha(alpha);}
}

贴出布局
android:clipToPadding="false" 该控件的绘制范围是否不在Padding里面。false:绘制的时候范围会考虑padding即会往里面缩进
android:clipChildren="false" 子控件是否能不超出padding的区域(比如ScrollView上滑动的时候,child可以滑出该区域)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"tools:context=".MainActivity"><com.cj5785.toolbartest.MyScrollViewandroid:id="@+id/scroll_view"android:layout_width="match_parent"android:layout_height="match_parent"android:clipChildren="false"android:clipToPadding="false"android:paddingTop="?attr/actionBarSize"><android.support.v7.widget.LinearLayoutCompatandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="@android:color/holo_orange_light" /><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="@android:color/holo_green_light" /><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="@android:color/holo_blue_light" /><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="@android:color/holo_red_light" /><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="@android:color/holo_purple" /></android.support.v7.widget.LinearLayoutCompat></com.cj5785.toolbartest.MyScrollView><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:logo="@mipmap/ic_launcher"app:navigationIcon="@drawable/abc_ic_ab_back_material"app:subtitle="子标题"app:subtitleTextColor="@android:color/white"app:title="主标题"app:titleTextColor="@color/colorAccent"><!--<TextView--><!--android:layout_width="wrap_content"--><!--android:layout_height="wrap_content"--><!--android:layout_gravity="center"--><!--android:text="这里是标题"/>--></android.support.v7.widget.Toolbar></RelativeLayout>

实现效果:

CoordinatorLayout

监听滑动控件的滑动通过Behavior反馈到其他子控件并执行一些动画
这里的滑动控件指的是RecyclerView/NestedScrollView/ViewPager,意味着ListViewScrollView不行
使用前需要添加support-design依赖

implementation 'com.android.support:design:25.4.0'

布局

<?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"tools:context=".MainActivity"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="match_parent" /><android.support.design.widget.FloatingActionButtonapp:layout_behavior=".FABBehavior"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|end"android:layout_margin="16dp" /></android.support.design.widget.CoordinatorLayout>

适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {private List<String> list;class MyViewHolder extends RecyclerView.ViewHolder {private TextView textView;public MyViewHolder(View itemView) {super(itemView);textView = (TextView) itemView.findViewById(android.R.id.text1);}}public MyAdapter(List<String> list) {this.list = list;}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());View view = layoutInflater.inflate(android.R.layout.simple_list_item_1,parent,false);MyViewHolder holder = new MyViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(MyViewHolder holder, int position) {holder.textView.setText(list.get(position));}@Overridepublic int getItemCount() {return list.size();}
}

Behavior

public class FABBehavior extends FloatingActionButton.Behavior {private boolean isShow;public FABBehavior(Context context, AttributeSet attrs) {super(context, attrs);}//依赖滑动开始回调@Overridepublic boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) {//nestedScrollAxes 滑动的方向,这里我们依赖recyclerview,只关心其是否垂直滑动return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL|| super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes);}//依赖滑动过程回调@Overridepublic void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);//根据情况执行动画if (dyConsumed > 0 && isShow) {isShow = false;onHide(child);} else if (dyConsumed < 0) {isShow = true;onShow(child);}}private void onShow(FloatingActionButton fab) {ViewCompat.animate(fab).scaleX(1f).scaleY(1f).start();}private void onHide(FloatingActionButton fab) {ViewCompat.animate(fab).scaleX(0f).scaleY(0f).start();}
}

调用

public class MainActivity extends AppCompatActivity {private List<String> list = new ArrayList<>();private RecyclerView recyclerView;private MyAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);recyclerView = (RecyclerView) findViewById(R.id.recycler_view);recyclerView.setLayoutManager(new LinearLayoutManager(this));for (int i = 0; i < 100; i++) {list.add("item " + i);}adapter = new MyAdapter(list);recyclerView.setAdapter(adapter);}
}

效果如下,实现了FloatingActionButton上划隐藏,下拉显示

AppBarLayout

AppBarLayout继承自LinearLayout,一般用于导航栏,其常见子控件为Toolbar,但同时又不局限于Toolbar,可以实现导航栏的多种综合效果,其作为容器,里面可以增加布局,按照需要去实现各种效果
这里做一个简单的演示,导航栏通过recyclerview的滑动而显隐的效果
首先依旧是要引入依赖

implementation 'com.android.support:design:25.4.0'

然后编写布局,其外层为CoordinatorLayout,这里使用了预设behavior:appbar_scrolling_view_behavior,在监听的控件加上Flag设置,例如这里的app:layout_scrollFlags="scroll|enterAlways""
其Flag参数包括
scroll:将此布局和滚动时间关联。这个标识要设置在其他标识之前,没有这个标识则布局不会滚动且其他标识设置无效
enterAlways:任何向下滚动操作都会使此布局可见。这个标识通常被称为快速返回模式
enterAlwaysCollapsed:假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,当滚动到顶部的时候展开完
exitUntilCollapsed:当你定义了一个minHeight,此布局将在滚动到达这个最小高度的时候折叠
snap:当一个滚动事件结束,如果视图是部分可见的,那么它将被滚动到收缩或展开。例如,如果视图只有底部25%显示,它将折叠。相反,如果它的底部75%可见,那么它将完全展开
snap:

<?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"tools:context=".MainActivity"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="match_parent"android:clipChildren="false"android:clipToPadding="false"app:layout_behavior="@string/appbar_scrolling_view_behavior" /><android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><android.support.v7.widget.Toolbarandroid:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:layout_gravity="center"android:background="?attr/colorPrimary"app:layout_scrollFlags="scroll|enterAlways"app:title="这是标题" /></android.support.design.widget.AppBarLayout></android.support.design.widget.CoordinatorLayout>

由于使用的是RecyclerView,故还需要适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {private List<String> list;class MyViewHolder extends RecyclerView.ViewHolder {private TextView textView;public MyViewHolder(View itemView) {super(itemView);textView = (TextView) itemView.findViewById(android.R.id.text1);}}public MyAdapter(List<String> list) {this.list = list;}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());View view = layoutInflater.inflate(android.R.layout.simple_list_item_1,parent,false);MyViewHolder holder = new MyViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(MyViewHolder holder, int position) {holder.textView.setText(list.get(position));}@Overridepublic int getItemCount() {return list.size();}
}

设置RecyclerView数据

public class MainActivity extends AppCompatActivity {private List<String> list = new ArrayList<>();private MyAdapter adapter;private RecyclerView recyclerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);recyclerView = (RecyclerView) findViewById(R.id.recycler_view);recyclerView.setLayoutManager(new LinearLayoutManager(this));for (int i = 0; i < 30; i++) {list.add("item " + i);}adapter = new MyAdapter(list);recyclerView.setAdapter(adapter);}
}

查看效果如下

ViewPager + TabLayout + Fragment + AppBarLayout

AppBarLayout同时还可以使用其他可滑动控件,例如NestedScrollView,其常用组合为:ViewPager + TabLayout + Fragment + AppBarLayout
由于这套组合的体验效果不错,这里展现一下这个样式的demo
首先依旧是引入依赖


因为使用了Toolbar,所以这里使用NoActionBar的主题

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style></resources>

编写ViewPager的Fragment布局,这里简单显示text,记得这里应该是一个滑动控件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"><android.support.v4.widget.NestedScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"><TextViewandroid:id="@+id/text_view"android:layout_width="match_parent"android:layout_height="match_parent"android:textColor="@android:color/black"android:textSize="24sp" /></android.support.v4.widget.NestedScrollView>
</LinearLayout>

然后是自定义的fragment

public class DefaultFragment extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_layout,container,false);TextView textView = (TextView) view.findViewById(R.id.text_view);Bundle bundle = getArguments();String title = bundle.getString("title");textView.setText(title+"\n\n");for (int i = 0; i < 10; i++) {textView.append("这是一个ViewPager + TabLayout + Fragment + AppBarLayout测试用例\n\n");}return view;}
}

接下来是主布局

<?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:orientation="vertical"tools:context=".MainActivity"><android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><android.support.v7.widget.Toolbarandroid:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:layout_scrollFlags="scroll|enterAlways"app:title="标题" /><android.support.design.widget.TabLayoutandroid:id="@+id/table_layout"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/holo_orange_light"app:tabGravity="fill"app:tabMode="scrollable" /></android.support.design.widget.AppBarLayout><android.support.v4.view.ViewPagerandroid:id="@+id/view_pager"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior" /></android.support.design.widget.CoordinatorLayout>

最后关联TableLayout和ViewPager

public class MainActivity extends AppCompatActivity {private TabLayout tabLayout;private ViewPager viewPager;private String[] title = {"新闻", "体育", "汽车", "科技", "手机", "数码", "读书", "艺术"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tabLayout = (TabLayout) findViewById(R.id.table_layout);viewPager = (ViewPager) findViewById(R.id.view_pager);MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());viewPager.setAdapter(adapter);tabLayout.setupWithViewPager(viewPager);}class MyPagerAdapter extends FragmentPagerAdapter {public MyPagerAdapter(FragmentManager fm) {super(fm);}@Overridepublic CharSequence getPageTitle(int position) {return title[position];}@Overridepublic Fragment getItem(int position) {Fragment fragment = new DefaultFragment();Bundle bundle = new Bundle();bundle.putString("title", title[position]);fragment.setArguments(bundle);return fragment;}@Overridepublic int getCount() {return title.length;}}
}

这样就完成了显示功能

CollapsingToolbarLayout

这个控件可以实现Toolbar的折叠效果
先看下其常用参数
expandedTitleMargin:展开后的边距
statusBarScrim:状态栏颜色
contentScrim:内容颜色
app:layout_collapseMode:设置折叠模式,分为视差模式(parallax:在折叠的时候会有折叠视差效果,一般搭配layout_collapseParallaxMultiplier,视差的明显程度),固定模式(pin:在折叠的时候最后固定在顶端,再和toolbar一起推出),无模式(none:折叠时toolbar直接推出)
expandedTitleGravity:展开的位置
collapsedTitleGravity:折叠的位置
使用时依然需要导入依赖

implementation 'com.android.support:design:25.4.0'

然后使用NoActionBar主题
使用时的布局示例

<?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"tools:context=".MainActivity"><android.support.v4.widget.NestedScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"><TextViewandroid:id="@+id/text_view"android:layout_width="match_parent"android:layout_height="match_parent"android:text="@string/test_text"android:textColor="@android:color/black"android:textSize="24sp" /></android.support.v4.widget.NestedScrollView><android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="180dp"><android.support.design.widget.CollapsingToolbarLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"app:layout_scrollFlags="scroll|exitUntilCollapsed"app:expandedTitleMargin="8dp"app:statusBarScrim="?attr/colorPrimary"app:contentScrim="?attr/colorPrimary"app:expandedTitleGravity="center"app:collapsedTitleGravity="center"app:title="现代诗歌欣赏"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="centerCrop"android:src="@drawable/tdj"app:layout_collapseMode="parallax"app:layout_collapseParallaxMultiplier="0.5"/><android.support.v7.widget.Toolbarapp:layout_collapseMode="pin"android:id="@+id/tool_bar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"/></android.support.design.widget.CollapsingToolbarLayout></android.support.design.widget.AppBarLayout></android.support.design.widget.CoordinatorLayout>

设置Toolbar

public class MainActivity extends AppCompatActivity {private Toolbar toolbar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);toolbar = (Toolbar) findViewById(R.id.tool_bar);toolbar.setNavigationIcon(R.mipmap.ic_launcher);setSupportActionBar(toolbar);}
}

实现的效果如下图

转载于:https://www.cnblogs.com/cj5785/p/10664597.html

高级UI-符合MD的常用控件相关推荐

  1. 【Qt教程】2.1 - Qt5 UI设计器、常用控件

    1. UI设计器使用 新建工程,将 .ui文件勾上. 双击 .ui文件,会弹出UI设计器,其布局大概为: 其中UI界面的信号槽只能使用系统事件,不能使用自定义信号与槽.所以主要还是由用户代码来完成. ...

  2. Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)

    文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...

  3. Qt常用控件介绍(一)

    Qt常用控件介绍 Qt Creator 的使用技巧 Qt Creator的常用快捷键 按钮 QPushButton QToolButton QRadioButton QCheckBox QComman ...

  4. Windows phone8 基础篇(三) 常用控件开发

    广告:  为了方便我们大家一起学习和讨论,我开设了一个群300143953.专门关于windows phone开发学习的群.因为群刚建,所以没人.欢迎大家.另外如果出现啥错误性的问题,希望大家能够 指 ...

  5. 第31讲 UI组件之 Gallery画廊控件

    第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...

  6. 设计器的使用及常用控件

    设计器的使用及常用控件 文章目录 设计器的使用及常用控件 一.设计器 二.设计器中的常用控件 一.设计器 1.设计器的使用 2.通过代码操作ui文件 #include "mainwindow ...

  7. Android中列表框纵向布局,andriod布局常用控件属性..docx

    andriod布局常用控件属性. android:gravity="center_vertical" ?限定它里面的内容要垂直居中显示.?android:layout_gravit ...

  8. Windows Phone7屏幕方向与常用控件

    跟林永坚老师学习wp7 屏幕方向(Orientation) 常用控件(Canvas,Grid,StackPanel,TextBlock,Image,MediaElement) 屏幕方向感应页面(Por ...

  9. iPhone像素点和常用控件尺寸

    iPhone像素点和常用控件尺寸 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/8565872 1.    iPhone ...

  10. 【Qt】桌面应用开发教程——布局|按钮组|容器|常用控件|消息事件机制

    文章目录 3.布局 3.1 系统提供的布局控件 3.2 利用widget做布局 3.3 利用表单做布局 4.按钮组 5.项目构建组 6.容器 7.常用控件 7.1 QLabel控件使用 7.1.1 显 ...

最新文章

  1. day1 作业二:多级菜单操作
  2. 页面重新跳转到父类url
  3. 计算机删除默认共享怎样操作,如何清除计算机默认共享隐患
  4. iOS - block变量捕获原理
  5. 第一篇论文:改进TCP及UDP的性能分析及比较
  6. 搜索结果去重_华为诺亚方舟实验室推荐与搜索方向六项研究成果获CIKM 2020录用...
  7. js定义php中变量,JavaScript 变量
  8. PHPEclipse安装与使用
  9. 2018年java web前端(总结)前端要求和流行几个框架
  10. 一、linux驱动实验-14.1-imx6ull驱动MT7601
  11. linux bt下载软件推荐,分享|Ubuntu 下五个最好的 BT 客户端
  12. 谷歌此号码无法验证解决
  13. Axure8 全选控制中继器里的checkbox
  14. 严格执行系统,严格止损,不要心存侥幸,勇敢承认错误,不给自己的错误找理由。
  15. (JAVA)错误:Type mismatch: cannot convert from double to float ,这是什么意思?如何解决?
  16. 中国丹参市场经营模式与盈利预测报告(新版)2021-2026年
  17. 飞入百姓家的智能路由器
  18. 二叉树非递归dfs——简单思路搞定前中后序遍历
  19. 服务器端的相对地址与绝对地址
  20. 高频面试(十二):Elasticsearch和solar的区别

热门文章

  1. logback按等级输出到不同日志文件
  2. 海湾监控计算机,海湾GST-DH9300电气火灾监控图形显示系统软件
  3. 2019年英语计算机二级,2019年下半年计算机二级考试时间和英语六级考..._成人英语考试_帮考网...
  4. echarts迁徙图 vue_vue中echarts引入中国地图的案例
  5. 【渝粤教育】国家开放大学2019年春季 7407药物治疗学(本) 参考试题
  6. MATLAB数组生成、引用
  7. 【Nature论文浅析】基于模型的AlphaGo Zero
  8. POJ1064 Cable master 【二分找最大值】
  9. 思科接入层交换机故障
  10. [转]CMS Content Management System(内容管理系统) 提供商