先讲下recyclerview的用法
我们前面已经用过三次recyclerview了
大致用法就是现在依赖中添加implementation' com.android.support:recyclerview-v7:26.1.0'
然后就可以引用<android.support.v7.widget.RecyclerView>了
然后我们要在layout里面定义一个用于给他适配的layout,layout可以自由组合
然后我们需要一个适配器ObjectAdapter extends RecyclerView.Adapter<ObjectAdapter.ViewHolder>用来双继承
在这个类中static class ViewHolder extentds RecyclerView.ViewHolder{
public ViewHolder(View view){
初始化在适配的layout里面的成员参数;
}
public ObjectAdapter(List){
private xx=list;}}
然后有三个函数
@Override public ViewHolder onCreateViewHolder(ViewGroup Parent, int Viewtype){
View view=LayoutInflator.from(parent.getContext()).inflate(R.layout.msg.item,parent,false);
return new ViewHolder(view);}
@OVerride public void onBindViewHolder(ViewHolder holder,int position){
Msg msg=mMsgList.get(position);
holder.leftlayout.setVisibility(View.GONE//不可见 View.VISIBLE//可见)
}}
@Override int getItemCount(){}
三个函数分别表示加在一个view和view的运行绑定。
然后最后在mainactivity中运行
记住RecyclerView.setLayoutManager(new LinearLayoutManager(this));实现他的线性布局
ObjectAdapter.notifyItemInserted(list.size()-1);//刷新listview显示
recyclerView.scrollToPosition(list.size()-1)显示最后一行:
下面再来看下actionbar的用法
在manifest.xml文件中在application 或activity中讲theme指定为Theme.Holo
隐藏actionbar的方式ActionBar actionBar=getActionBar(); actionBar.hide();
<activity
android:logo="@drawable/picture" android:label="text">可以修改actionbar的图标和标题。
当Activity启动的时候,系统会调用Activity的onCreateOptionsMenu()方法来取出所有的Action按钮,我们只需要在这个方法中去加载一个menu资源,并把所有的Action按钮都定义在资源文件里面就可以了。
- <menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- tools:context="com.example.actionbartest.MainActivity" >
- <item
- android:id="@+id/action_compose"
- android:icon="@drawable/ic_action_compose"
- android:showAsAction="always"
- android:title="@string/action_compose"/>
- <item
- android:id="@+id/action_delete"
- android:icon="@drawable/ic_action_delete"
- android:showAsAction="always"
- android:title="@string/action_delete"/>
- <item
- android:id="@+id/action_settings"
- android:icon="@drawable/ic_launcher"
- android:showAsAction="never"
- android:title="@string/action_settings"/>
- </menu>
如果空间不够则不显示,ifRoom表示空间够显示在屏幕中,否则显示在overflow里面
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.main, menu);
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item){
- switch(item.getItemId()){
- }
- return true;
重写menu的显示方法
其实还有个toolbar也是一样的
那么toolbar怎么用呢
首先在resource的style里面讲parent设置为Theme.AppCompat.Light/或者没有Light表示深色.NoActionBar
然后修改activity_main中的代码
<LinearLayout xmlns:android=.... xmlns app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay
.AppCompat.Light"/>
然后是设置导航栏键:
ActionBar中就是
ActionBar actionBar=getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true);
ToolBar中就是
ActionBar actionBar=getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.picture);导航键的id是R.id.home
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- Intent upIntent = NavUtils.getParentActivityIntent(this);
- if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
- TaskStackBuilder.create(this)
- .addNextIntentWithParentStack(upIntent)
- .startActivities();
- } else {
- upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- NavUtils.navigateUpTo(this, upIntent);
- }
- return true;
- ......
- }
- }
- <item
- android:id="@+id/action_search"
- android:icon="@drawable/ic_action_search"
- android:actionViewClass="android.widget.SearchView"
- android:showAsAction="ifRoom|collapseActionView"
- android:title="@string/action_search" />
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.main, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) searchItem.getActionView();
- // 配置SearchView的属性
- ......
- return super.onCreateOptionsMenu(menu);
- }
设置searchview的属性;
- searchItem.setOnActionExpandListener(new OnActionExpandListener() {
- @Override
- public boolean onMenuItemActionExpand(MenuItem item) {
- Log.d("TAG", "on expand");
- return true;
- }
- @Override
- public boolean onMenuItemActionCollapse(MenuItem item) {
- Log.d("TAG", "on collapse");
- return true;
- }
- });
- @Override
- public boolean onMenuOpened(int featureId, Menu menu) {
- if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
- if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
- try {
- Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
- m.setAccessible(true);
- m.invoke(menu, true);
- } catch (Exception e) {
- }
- }
- }
- return super.onMenuOpened(featureId, menu);
- }