先介绍Android 5.X之后出现的Design meterial的新控件使用design包下的控件必须先导包
compile 'com.android.support:design:24.0.0'
CoordinatorLayout作为“super-powered FrameLayout”本质是个帧布局FrameLayout
基本实现两个功能:
1、作为顶层布局; 其子控件可以通过layout_gravity控制自身位置
2、调度协调子布局.
CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局
的形式产生动画效果。CoordinatorLayout通过设置子View的Behaviors来调
app:layout_scrollFlags
<?xml version="1.0" encoding="utf-8"?>
<!--CoordinatorLayout本质是个FrameLayout-->
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="xixirupan.tmgp.com.newdesign.MainActivity">
<!-- android:fitsSystemWindows="true"必须加上否则toolbar名称设置不上
AppBarLayout本质是一个LinearLayout vertical
-->
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
>
<!-- layout_scrollFlags是AppBar需要滚动的子元素设置的属性
有四个值exitUntilCollapse,enterAlaways,enterAlwaysUtilCollapse scroll
要想实现滚动scroll必加 其他三个可以根据需要的效果选择
CollapsingToolbarLayout通常只包裹TooLbar
有时候也包裹一张图片作为Toolbar的背景图片 造成一定的视觉效果
CollapsingToolbarLayout本质也是一个FrameLayout
-->
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="#66ff0000"
app:contentScrim="#6600ff00"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/agin7"
/>
<!--Toolbar的高必须设置明确的值否则就不会收缩在上面
原因我想很简单就是toolbar没有明确高不知道该收缩多少这样的话系统将什么也不做
-->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
app:title=" "
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
<!--app:layout_behavior="@string/appbar_scrolling_view_behavior"
该属性是CoordinatorLayout中的需要滚动的子元素设置的属性
-->
<android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<xixirupan.tmgp.com.newdesign.view.NoListView
android:id="@+id/noListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/items"
>
</xixirupan.tmgp.com.newdesign.view.NoListView>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
public class NoListView extends ListView {
public NoListView(Context context) {
super(context);
}
public NoListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
app:cardElevation
app:cardMaxElevation
app:cardBackgroundColor
app:cardCornerRadius
app:contentPadding
app:cardUseCompatPadding
app:cardPreventConrerOverlap
compile 'com.android.support:cardview-v7:24.0.0'
<android.support.v7.widget.CardView ... android:clickable="true" android:foreground="?android:attr/selectableItemBackground"> ... </android.support.v7.widget.CardView>
DrawerLayout内部.
1⃣️.app:headerLayout
2⃣️.app:menu
setNavigationItemSelectedListener
OnNavigationItemSelectedListener
MenuItem
onOptionsItemSelected
mNavigationView.setNavigationItemSelectedListener(new
@OverridepublicbooleanonNavigationItemSelected(MenuItem menuItem){
menuItem.setChecked(true);// 改变item选中状态
currentNavigationId = menuItem.getItemId();
returntrue;
} else {
returnfalse;
}
}
});
<--正常状态下字体颜色和icon颜色-->
<item name="android:textColorPrimary">@android:color/darker_gray</item>
<--选中状态icon的颜色和字体颜色-->
<item name="colorPrimary">@color/accent_material_light</item>
app:itemBackground.
2⃣️.setItemIconTintList(ColorStateList):给menu的icon设置颜色,对应的属
性app:itemIconTint.
3⃣️.setItemTextColor(ColorStateList):给menu的item设置字体颜色,对应的属性
app:itemTextColor.