Android實(shí)現(xiàn)滑動(dòng)標(biāo)簽頁
本文實(shí)例為大家分享了Android實(shí)現(xiàn)滑動(dòng)標(biāo)簽頁的具體代碼,供大家參考,具體內(nèi)容如下
TabLayoutActivity.java
package cn.edu.zufe.app0406;import androidx.appcompat.app.AppCompatActivity;import androidx.appcompat.widget.Toolbar;import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentPagerAdapter;import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;import androidx.viewpager.widget.ViewPager;import android.annotation.SuppressLint;import android.os.Bundle;import com.google.android.material.appbar.AppBarLayout;import com.google.android.material.tabs.TabLayout;import java.util.ArrayList;import java.util.List;import cn.edu.zufe.app0406.adapter.FragmentAdapter;public class TabLayoutActivity extends AppCompatActivity { private AppBarLayout abl; private Toolbar tbTool; private TabLayout tl; private ViewPager vp; private SwipeRefreshLayout srl; private List<Fragment> fragments = new ArrayList<>(); private FragmentAdapter fragmentAdapter; private void initViewPager() {List<String> titles = new ArrayList<>();titles.add('精選');titles.add('體育');titles.add('娛樂');titles.add('軍事');titles.add('美食');titles.add('旅游');titles.add('風(fēng)景');for(int i=0; i<titles.size(); i++) { tl.addTab(tl.newTab().setText(titles.get(i)));}for(int i=0; i<titles.size(); i++) { fragments.add(new FruitFragment());}fragmentAdapter = new FragmentAdapter(getSupportFragmentManager(), FragmentPagerAdapter.BEHAVIOR_SET_USER_VISIBLE_HINT, fragments, titles);vp.setAdapter(fragmentAdapter);tl.setupWithViewPager(vp); } @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_tab_layout);abl = (AppBarLayout) findViewById(R.id.abl);tbTool = (Toolbar) findViewById(R.id.tb_tool);tl = (TabLayout) findViewById(R.id.tl);vp = (ViewPager) findViewById(R.id.vp);srl = (SwipeRefreshLayout) findViewById(R.id.srl);setSupportActionBar(tbTool);initViewPager();srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @SuppressLint('RestrictedApi') @Override public void onRefresh() {FruitFragment fragment = new FruitFragment();for(int i = 0; i < fragments.size(); i++) { fragment = (FruitFragment) fragments.get(i); if(fragment != null && fragment.isAdded() && fragment.isMenuVisible()) {break; }}fragment.refreshFruit();srl.setRefreshing(false); }}); }}
activity_tab_layout.xml
<?xml version='1.0' encoding='utf-8'?><androidx.coordinatorlayout.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='.TabLayoutActivity'> <com.google.android.material.appbar.AppBarLayoutandroid:layout_width='match_parent'android:layout_height='wrap_content'android: ><androidx.appcompat.widget.Toolbar android:layout_width='match_parent' android:layout_height='?attr/actionBarSize' app:layout_scrollFlags='scroll|enterAlways' android: /><com.google.android.material.tabs.TabLayout android:layout_width='match_parent' android:layout_height='wrap_content' android: app:tabMode='scrollable' /> </com.google.android.material.appbar.AppBarLayout> <androidx.swiperefreshlayout.widget.SwipeRefreshLayoutandroid:layout_width='match_parent'android:layout_height='match_parent'app:layout_behavior='@string/appbar_scrolling_view_behavior'android: ><androidx.viewpager.widget.ViewPager android:layout_width='match_parent' android:layout_height='match_parent' android: ></androidx.viewpager.widget.ViewPager> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout></androidx.coordinatorlayout.widget.CoordinatorLayout>
FruitAdapter.java
package cn.edu.zufe.app0406.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import androidx.annotation.NonNull;import androidx.recyclerview.widget.RecyclerView;import com.bumptech.glide.Glide;import com.google.android.material.card.MaterialCardView;import java.util.List;import cn.edu.zufe.app0406.R;import cn.edu.zufe.app0406.bean.Fruit;public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> { private Context mContext; private List<Fruit> mFruitList; public FruitAdapter(List<Fruit> mFruitList) {this.mFruitList = mFruitList; } static class ViewHolder extends RecyclerView.ViewHolder {private MaterialCardView cardView;private ImageView ivFruit;private TextView tvFruit;public ViewHolder(@NonNull View itemView) { super(itemView); cardView = (MaterialCardView) itemView; ivFruit = (ImageView) cardView.findViewById(R.id.iv_fruit); tvFruit = (TextView) cardView.findViewById(R.id.tv_fruit);} } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {if(mContext == null) { mContext = parent.getContext();}View view = LayoutInflater.from(mContext).inflate(R.layout.card_info_item, parent, false);return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) {Fruit fruit = mFruitList.get(position);holder.tvFruit.setText(fruit.getName());Glide.with(mContext).load(fruit.getImageUrl()).into(holder.ivFruit); } @Override public int getItemCount() {return mFruitList.size(); }}
FragmentAdapter.java
package cn.edu.zufe.app0406.adapter;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentManager;import androidx.fragment.app.FragmentPagerAdapter;import java.util.List;public class FragmentAdapter extends FragmentPagerAdapter { private List<Fragment> fragments; private List<String> titles; public FragmentAdapter(@NonNull FragmentManager fm, int behavior, List<Fragment> fragments, List<String> titles) {super(fm, behavior);this.fragments = fragments;this.titles = titles; } @Nullable @Override public CharSequence getPageTitle(int position) {return titles.get(position); } @NonNull @Override public Fragment getItem(int position) {return fragments.get(position); } @Override public int getCount() {return fragments.size(); }}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 得到XML文檔大小的方法2. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法3. 輕松學(xué)習(xí)XML教程4. ASP中if語句、select 、while循環(huán)的使用方法5. WMLScript的語法基礎(chǔ)6. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問題……7. xml中的空格之完全解說8. html小技巧之td,div標(biāo)簽里內(nèi)容不換行9. XML入門的常見問題(四)10. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法
