V7
1.AlertDialog
v7风格的Dialog相对原来的版本去掉了跳跃弹出的动画,下方按钮去掉了边框,聚集在了右侧,显示时去掉了分隔线。
取代原先的ActionBar实现相对完美的定制
xml文件
<android.support.v7.widget.Toolbar
android:id="@+id/md_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="50dp"
android:background="?attr/colorPrimary"
android:layout_marginBottom="20dp"
>
代码
getSupportActionBar().setDisplayShowTitleEnabled(false);
Toolbar toolbar = (Toolbar) findViewById(R.id.md_toolbar);
toolbar.setTitle("测试");
toolbar.setSubtitle("副标题");
toolbar.setLogo(R.mipmap.ic_launcher);
toolbar.setNavigationIcon(android.R.drawable.ic_input_delete);
setSupportActionBar(toolbar);
toolbar.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MainActivity.this, "点击了" + item.getItemId(), Toast.LENGTH_SHORT).show();
return false;
}
});
题外话,如何创建菜单项
//重写该方法,菜单将会显示在toobar上
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu)
//获取toolbar上的菜单view,也可以在上面的setOnMenuItemClickListener实现更加简单,这里只是一个演示。
MenuItem item = menu.findItem(R.id.action_share)
//强转为你需要的view
View actionView = item.getActionView()
return super.onCreateOptionsMenu(menu)
}
//菜单文件,为没有接触过的小伙伴准备的额,相关属性请自行查文档
//res/menu/menu_main.xml
<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/ab_search"
android:orderInCategory="80"
android:title="action_search" app:actionViewClass="android.support.v7.widget.SearchView"/>
<item
android:id="@+id/action_share"
android:orderInCategory="90"
android:title="action_share" app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="action_settings"
app:showAsAction="never"/>
</menu>
2.LinearLayoutCompat
在控件中间添加分隔线
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|center_horizontal"
android:orientation="vertical"
app:divider="@drawable/line"
app:dividerPadding="4dp"
app:showDividers="middle"
>
.....
</android.support.v7.widget.LinearLayoutCompat>
app:divider=”@drawable/line”
给分隔线设置颜色,这里你需要在drawable在定义shape资源,否则将没有效果。
app:dividerPadding=”25dp”
给分隔线设置距离左右边距的距离。
app:showDividers=”middle|beginning|end”
分隔线显示的位置,有四种参数值:middle 每个item之间,beginning最顶端显示分隔线,end 最底端显示分隔线,none不显示间隔线。
public void showListPopup(View view) {
String items[] = {"item1", "item2", "item3", "item4", "item5"};
final ListPopupWindow listPopupWindow = new ListPopupWindow(this);
listPopupWindow.setAdapter(new ArrayAdapter<String>(SwipeRefreshActivity.this, android.R.layout.simple_list_item_1, items));
listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(SwipeRefreshActivity.this, "the position is" + position, Toast.LENGTH_SHORT).show();
}
});
listPopupWindow.setAnchorView(view);
listPopupWindow.setHorizontalOffset(100);
listPopupWindow.setVerticalOffset(100);
listPopupWindow.setWidth(300);
listPopupWindow.setHeight(600);
listPopupWindow.setModal(false);
listPopupWindow.show();
}
public void showPopupMenu(View view) {
PopupMenu popupMenu = new PopupMenu(this, view);
popupMenu.getMenuInflater().inflate(R.menu.menu_main, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
});
popupMenu.setOnDismissListener(this);
popupMenu.show();
}
4.新风格Spinner
<Spinner
android:id="@+id/spinner"
style="@android:style/Widget.Holo.Light.Spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Spinner>
5.v4-SwipeRefreshLayout
SwipeRefreshLayout继承自ViewGroup,理论上可以完成任何View的刷新
xml文件
xml文件很简单,就像一个FrameLayout一样简单
代码
final SwipeRefreshLayout swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.md_SwipeRefreshLayout);
swipeRefreshLayout.setColorSchemeColors(Color.RED, Color.BLUE, Color.GREEN);
swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);
swipeRefreshLayout.setDistanceToTriggerSync(5);