Android TabLayout和ViewPager配套的简单使用
来源:互联网 发布:编程无人机在哪买 编辑:程序博客网 时间:2024/05/16 08:10
首先是导依赖
Fragment布局:
适配器的两个布局:
以上是效果图的展示,在ListView中还加了条目点击事件,点击之后跳入下一个页面:
第二个页面布局视图:
第二个页面同样具有上载下拉,只不过是整个页面在上载下拉。
compile 'com.android.support:design:26.0.0-alpha1' compile 'com.jwenfeng.pulltorefresh:library:1.0.3' compile 'com.bigkoo:convenientbanner:2.0.5'接下来是TabLayout和ViewPager布局视图
<?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" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.example.app2_work.MainActivity" tools:showIn="@layout/app_bar_main"> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="30dp" android:id="@+id/tabs" android:layout_alignParentTop="true" app:tabMode="scrollable" app:tabSelectedTextColor="@color/slect" app:tabIndicatorColor="@color/slect" app:tabIndicatorHeight="3dp" app:tabGravity="center" ></android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vp" android:layout_below="@id/tabs" ></android.support.v4.view.ViewPager></RelativeLayout>
给TabLayout和ViewPager建立联动
package com.example.app2_work;import android.os.Bundle;import android.support.design.widget.NavigationView;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.GravityCompat;import android.support.v4.view.ViewPager;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.ActionBarDrawerToggle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuItem;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private TabLayout tabs; private ViewPager vps; private List<String> arrylist = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); init(); getinit(); tabs.setupWithViewPager(vps); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camera) { // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } private void init() { tabs = (TabLayout) findViewById(R.id.tabs); vps = (ViewPager) findViewById(R.id.vp); arrylist.add("美女"); arrylist.add("VR"); arrylist.add("国际"); arrylist.add("娱乐"); arrylist.add("体育"); arrylist.add("NBA"); arrylist.add("足球"); arrylist.add("科技"); arrylist.add("创业"); arrylist.add("苹果"); } private void getinit() { MyAdapter adapter = new MyAdapter(getSupportFragmentManager()); vps.setAdapter(adapter); } class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public CharSequence getPageTitle(int position) { return arrylist.get(position); } @Override public Fragment getItem(int position) { Frag1 frag1 = new Frag1(); Bundle bundle = new Bundle(); if (arrylist.get(position).equals("美女")) { bundle.putString("name","meinv"); }else if (arrylist.get(position).equals("VR")){ bundle.putString("name","vr"); }else if (arrylist.get(position).equals("国际")) { bundle.putString("name","world"); }else if (arrylist.get(position).equals("娱乐")) { bundle.putString("name","huabian"); }else if (arrylist.get(position).equals("体育")) { bundle.putString("name","tiyu"); }else if (arrylist.get(position).equals("NBA")) { bundle.putString("name","nba"); }else if (arrylist.get(position).equals("足球")) { bundle.putString("name","football"); }else if (arrylist.get(position).equals("科技")) { bundle.putString("name","keji"); }else if (arrylist.get(position).equals("创业")) { bundle.putString("name","startup"); }else if (arrylist.get(position).equals("苹果")) { bundle.putString("name","apple"); } frag1.setArguments(bundle); return frag1; } @Override public int getCount() { return arrylist.size(); } }}然后建立一个类继承Fragment,用来接收从主页面传来的数据,并通过异步任务进行网络请求获取数据,通过Gson解析封装到List集合中,把集合中的数据赋给适配器,并添加适配器,从而显示出来;
Fragment布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/plv" android:layout_below="@id/tabs" ></com.handmark.pulltorefresh.library.PullToRefreshListView></RelativeLayout>Fragment页面中获取数据:
package com.example.app2_work;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.provider.Settings;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.ListView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.List;import Bean.JsonRootBean;import Bean.Newslist;/** * Created by ZhangTAO on 2017/9/20. */public class Frag1 extends Fragment{ private String names; private int nub = 10; private List<Newslist> datas; private MyAdapterzt myAdapterzt; private Handler ler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { myAdapterzt.notifyDataSetChanged(); plv.onRefreshComplete(); } if (msg.what == 0) { myAdapterzt.notifyDataSetChanged(); plv.onRefreshComplete(); } } }; private PullToRefreshListView plv; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v1 = inflater.inflate(R.layout.frag1_act, null); plv = v1.findViewById(R.id.plv); return v1; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle arguments = getArguments(); names = arguments.getString("name"); if (isNetWorkInif()) { getDatamatFor(names); }else { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("警告!"); builder.setMessage("网络不可用,是否设置?"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); startActivity(intent); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); builder.show(); } } /** * 判断网络连接 * @return */ private boolean isNetWorkInif() { ConnectivityManager manager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info != null) { return info.isAvailable(); } return false; } /** * 异步任务 * @param string */ private void getDatamatFor(final String string) { AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { getDat(string); return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); myAdapterzt = new MyAdapterzt(getActivity(), datas); plv.setAdapter(myAdapterzt); plv.setMode(PullToRefreshBase.Mode.BOTH); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { new Thread(new Runnable() { @Override public void run() { nub=10; getDatamatFor(names); ler.sendEmptyMessageDelayed(1,2000); } }).start(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { new Thread(new Runnable() { @Override public void run() { nub=nub+5; getDatamatFor(names); ler.sendEmptyMessageDelayed(0,2000); } }).start(); } }); plv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getActivity(), Main2.class); startActivity(intent); } }); } }; task.execute(); } /** * 获取网络数据 */ public void getDat(String name) { String json = null; String path = "http://api.tianapi.com/"+name+"/?key=c8bb8de75b2287a6c6c390c50afb21e1&num="+nub; try { URL url = new URL(path); HttpURLConnection connection = null; connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int code = connection.getResponseCode(); if (code == 200) { InputStream inputStream = connection.getInputStream(); json = streamTostring(inputStream, "utf-8"); Gson gs = new Gson(); JsonRootBean fromJson = gs.fromJson(json.toString(), JsonRootBean.class); datas = fromJson.getNewslist(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public String streamTostring(InputStream input,String charset) { String con = null; InputStreamReader inputStreamReader = new InputStreamReader(input); StringBuilder builder = new StringBuilder(); BufferedReader reader = new BufferedReader(inputStreamReader); try { while ((con = reader.readLine()) != null) { builder.append(con); } return builder.toString(); } catch (IOException e) { e.printStackTrace(); } return null; }}接下来就是适配器的设置:
适配器的两个布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/img1" android:layout_alignParentLeft="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv1" android:layout_toRightOf="@+id/img1" android:layout_marginTop="20dp" android:layout_marginLeft="8dp" /></RelativeLayout>
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title2" android:layout_alignParentLeft="true" android:layout_marginTop="20dp" android:layout_marginLeft="15dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/desc2" android:layout_below="@id/title2" android:layout_marginLeft="15dp" android:layout_marginTop="40dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ct2" android:layout_below="@id/title2" android:layout_toRightOf="@id/desc2" android:layout_marginLeft="30dp" android:layout_marginTop="40dp" /></RelativeLayout>适配器设置完后,就可以显示了,代码中还用了PullTOrefreshListView控件,所以ListView列表中还具有下拉刷新和上拉加载的功能;
以上是效果图的展示,在ListView中还加了条目点击事件,点击之后跳入下一个页面:
第二个页面布局视图:
<?xml version="1.0" encoding="utf-8"?><com.jwenfeng.library.pulltorefresh.PullToRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mpull" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.bigkoo.convenientbanner.ConvenientBanner android:layout_width="match_parent" android:layout_height="250dp" android:id="@+id/banner" android:layout_alignParentTop="true" app:canLoop="true" ></com.bigkoo.convenientbanner.ConvenientBanner> <GridView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/rd" android:numColumns="4" android:layout_below="@+id/banner" android:horizontalSpacing="5dp" android:verticalSpacing="5dp" ></GridView> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" android:layout_below="@+id/rd" > </ListView> </RelativeLayout></com.jwenfeng.library.pulltorefresh.PullToRefreshLayout>因为要使整个View视图具有上载下刷功能,所以使用了PullTorefreshLayout进行实现功能,其中还有从网络数据接口中获取的图片进行图片轮播,使用了ConvenientBanner,本篇刚开使写了它的依赖包,下面还有GirdView列表和ListView列表:
下面写了用异步任务请求网络数据并取出6张图片去无限轮播,并将集合赋值给GirdView和ListView的两个适配器,并设置适配器。
package com.example.app2_work;import android.content.Context;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.GridView;import android.widget.ImageView;import android.widget.ListView;import com.bigkoo.convenientbanner.ConvenientBanner;import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;import com.bigkoo.convenientbanner.holder.Holder;import com.google.gson.Gson;import com.jwenfeng.library.pulltorefresh.BaseRefreshListener;import com.jwenfeng.library.pulltorefresh.PullToRefreshLayout;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;import Bean.JsonRootBean;import Bean.Newslist;/** * Created by ZhangTAO on 2017/9/20. */public class Main2 extends AppCompatActivity{ public List<String> datalist = new ArrayList<String>(); private ConvenientBanner banner; private ImageLoader imageLoader; private ImageView imageView; private String picUrl; private GridView rd; private ListView lv; private int nub = 15; private List<Newslist> newslist = new ArrayList<>(); private Handler ler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { for (int i = 0; i < 6; i++) { datalist.add(newslist.get(i).getPicUrl()); } } getinit(); if (msg.what == 0x1) { lvAdapterzt.notifyDataSetChanged(); grAdapter.notifyDataSetChanged(); mpull.finishRefresh(); } if (msg.what == 0x2) { lvAdapterzt.notifyDataSetChanged(); grAdapter.notifyDataSetChanged(); mpull.finishLoadMore(); } } }; private PullToRefreshLayout mpull; private LvAdapterzt lvAdapterzt; private GrAdapter grAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2_act); init(); getDataFoamat(); ler.sendEmptyMessageDelayed(0,1000); } /** * 制造数据 */ public void getDat() { String json = null; String path = "http://api.tianapi.com/nba/?key=c8bb8de75b2287a6c6c390c50afb21e1&num="+nub; try { URL url = new URL(path); HttpURLConnection connection = null; connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int code = connection.getResponseCode(); if (code == 200) { InputStream inputStream = connection.getInputStream(); json = streamTostring(inputStream, "utf-8"); Gson gs = new Gson(); JsonRootBean fromJson = gs.fromJson(json.toString(), JsonRootBean.class); newslist = fromJson.getNewslist(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public String streamTostring(InputStream input,String charset) { String con = null; InputStreamReader inputStreamReader = new InputStreamReader(input); StringBuilder builder = new StringBuilder(); BufferedReader reader = new BufferedReader(inputStreamReader); try { while ((con = reader.readLine()) != null) { builder.append(con); } return builder.toString(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 异步任务 */ private void getDataFoamat() { AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { getDat(); return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); lvAdapterzt = new LvAdapterzt(Main2.this, newslist); lv.setAdapter(lvAdapterzt); grAdapter = new GrAdapter(Main2.this, newslist); rd.setAdapter(grAdapter); mpull.setLayoutMode(MODE_APPEND); mpull.setRefreshListener(new BaseRefreshListener() { @Override public void refresh() { new Thread(new Runnable() { @Override public void run() { nub = 15; getDataFoamat(); ler.sendEmptyMessageDelayed(0x1,2000); } }).start(); } @Override public void loadMore() { new Thread(new Runnable() { @Override public void run() { nub=nub+5; getDataFoamat(); ler.sendEmptyMessageDelayed(0x2,2000); } }).start(); } }); } }; task.execute(); } private void init() { banner = (ConvenientBanner) findViewById(R.id.banner); mpull = (PullToRefreshLayout) findViewById(R.id.mpull); rd = (GridView) findViewById(R.id.rd); lv = (ListView) findViewById(R.id.lv); imageLoader = ImageLoader.getInstance(); imageLoader.init(ImageLoaderConfiguration.createDefault(this)); } private void getinit() { banner.setPages(new CBViewHolderCreator<LocalImageNet>() { @Override public LocalImageNet createHolder() { return new LocalImageNet(); } },datalist) .setPointViewVisible(true) .startTurning(2000) .setPageIndicator(new int []{R.drawable.kong,R.drawable.shi}) .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL) .setManualPageable(true); } private class LocalImageNet implements Holder<String> { @Override public View createView(Context context) { imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.FIT_XY); return imageView; } @Override public void UpdateUI(Context context, int position, String data) { ImageLoader.getInstance().displayImage(data,imageView); } }}接下来是GirdView的适配器:
package com.example.app2_work;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.util.List;import Bean.Newslist;/** * Created by ZhangTAO on 2017/9/20. */public class GrAdapter extends BaseAdapter{ Context context; List<Newslist> newslist; public GrAdapter(Main2 main2, List<Newslist> newslist) { this.context = main2; this.newslist = newslist; } @Override public int getCount() { return newslist.size(); } @Override public Object getItem(int i) { return newslist.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { View gird = View.inflate(context, R.layout.gird_act, null); ImageView img_gr = gird.findViewById(R.id.gr_img); TextView tv_gr = gird.findViewById(R.id.gr_title); //赋值 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .defaultDisplayImageOptions(options).threadPoolSize(5) .build(); ImageLoader.getInstance().init(config); ImageLoader.getInstance().displayImage(newslist.get(i).getPicUrl(),img_gr); tv_gr.setText(newslist.get(i).getTitle()); return gird; }}ListView的适配器代码:
package com.example.app2_work;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.util.List;import Bean.Newslist;/** * Created by ZhangTAO on 2017/9/20. */public class LvAdapterzt extends BaseAdapter{ Context context; List<Newslist> newslist; public LvAdapterzt(Main2 main2, List<Newslist> newslist) { this.context = main2; this.newslist = newslist; } @Override public int getCount() { return newslist.size(); } @Override public Object getItem(int i) { return newslist.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { View list = View.inflate(context, R.layout.list_act,null); ImageView img_list = list.findViewById(R.id.lv_img); TextView tv_list = list.findViewById(R.id.lv_title); //赋值 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .defaultDisplayImageOptions(options).threadPoolSize(5) .build(); ImageLoader.getInstance().init(config); ImageLoader.getInstance().displayImage(newslist.get(i).getPicUrl(),img_list); tv_list.setText(newslist.get(i).getTitle()); return list; }}第二个页面的图片展示:
第二个页面同样具有上载下拉,只不过是整个页面在上载下拉。
<?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="com.example.app2_work.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="80dp" android:background="@color/slect" app:popupTheme="@style/AppTheme.PopupOverlay" > <RelativeLayout android:layout_width="match_parent" android:layout_height="80dp" android:id="@+id/rel" android:background="@color/slect" android:layout_alignParentTop="true" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tev" android:text="今日头条" android:textSize="40dp" android:layout_alignParentBottom="true" android:layout_marginBottom="10dp" android:textColor="@color/kong" /> <EditText android:layout_width="200dp" android:layout_height="30dp" android:id="@+id/et" android:textColor="@color/hei" android:layout_toRightOf="@id/tev" android:layout_alignParentBottom="true" android:layout_marginBottom="18dp" android:layout_marginLeft="45dp" android:hint="淘宝万物" android:background="@color/kong" /> <Button android:layout_width="60dp" android:layout_height="30dp" android:id="@+id/btn" android:layout_toRightOf="@id/et" android:text="搜索" android:layout_alignParentBottom="true" android:layout_marginBottom="18dp" android:background="@color/hui" /> </RelativeLayout> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /></android.support.design.widget.CoordinatorLayout>
新手开车,勿喷,谢谢!!!
阅读全文
0 0
- Android TabLayout和ViewPager配套的简单使用
- Android中TabLayout+ViewPager的简单使用
- TabLayout和ViewPager的简单使用
- TabLayout的简单使用(TabLayout+Fragment+ViewPager)
- TabLayout+viewpager的简单使用
- Tablayout+Viewpager的简单使用
- TabLayout和ViewPager的使用
- 简单优雅的使用tablayout和viewpager打造导航栏
- TabLayout+ViewPager简单使用
- Android中TabLayout和ViewPager的结合使用
- Android中TabLayout和ViewPager的结合使用
- TabLayout配合viewpager的简单使用
- TabLayout加ViewPager的简单使用
- TabLayout和ViewPager的简单联用
- TabLayout和ViewPager使用
- Android TabLayout的使用(ViewPager添加标题)
- Android 开发之 TabLayout + ViewPager 的使用
- Android的标签示例 - TabLayout和ViewPager
- 面试题(数据库)学习20170920
- Linux设备子系统初始化
- Python中的numpy.meshgrid
- 【QT】VS2015+QT5.6.0+opencv3.1.0 增强现实(一)
- HDU3081 Marriage Match II【网络流】
- Android TabLayout和ViewPager配套的简单使用
- Unity X C#小记之控制Object(物体)的Rotate(转动)
- java序列化对象存储ORACLE数据库
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Java操作Redis
- github基础配置
- bzoj 3226: [Sdoi2008]校门外的区间
- 逻辑回归
- copy构造函数的三种调用时机