ViewPager2與TabLayout的簡單使用

ViewPager2與TabLayout的簡單使用

  1. MainActivity.java
public class MainActivity extends AppCompatActivity {private ViewPager2 mViewPager;private TabLayout mTabLayout;private int[] icons = new int[]{R.drawable.icon1, R.drawable.icon2, R.drawable.icon3, R.drawable.icon4};private String[] iconDes = new String[]{"白", "黑", "綠", "紫"};private ImageView circle;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);circle = findViewById(R.id.circle);initView();}private void initView() {mViewPager = findViewById(R.id.vp2);List<ShowBigIdBean> list = new ArrayList<>();list.add(new ShowBigIdBean(R.drawable.img1, R.drawable.icon1, "白"));list.add(new ShowBigIdBean(R.drawable.img2, R.drawable.icon2, "黑"));list.add(new ShowBigIdBean(R.drawable.img3, R.drawable.icon3, "綠"));list.add(new ShowBigIdBean(R.drawable.img4, R.drawable.icon4, "紫"));ViewPagerAdapter adapter = new ViewPagerAdapter(this, list);mViewPager.setAdapter(adapter);initTabLayout();}private void initTabLayout() {mTabLayout = findViewById(R.id.tab_layout);mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {tab.setIcon(R.drawable.icon2);}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});TabLayoutMediator mediator = new TabLayoutMediator(mTabLayout, mViewPager, new TabLayoutMediator.TabConfigurationStrategy() {@Overridepublic void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {tab.setCustomView(getViewAtI(position));}});mediator.attach();}private View getViewAtI(int position) {View view = getLayoutInflater().inflate(R.layout.item_icon_layout, null, false);ImageView imageView = view.findViewById(R.id.icon);TextView textView = view.findViewById(R.id.icon_des);imageView.setImageResource(icons[position]);textView.setText(iconDes[position]);return view;}
}
  1. activity_main.xml
<?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"tools:context=".MainActivity"><androidx.viewpager2.widget.ViewPager2android:id="@+id/vp2"android:layout_width="250dp"android:layout_height="450dp"android:layout_centerHorizontal="true"android:layout_marginTop="50dp" /><com.google.android.material.tabs.TabLayoutandroid:id="@+id/tab_layout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="100dp"app:tabRippleColor="#00000000"app:tabIndicatorColor="#00000000" /></RelativeLayout>
  1. ViewPagerAdapter.java
public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.MyViewHolder> {private Context mContext;private List<ShowBigIdBean> mList;public ViewPagerAdapter(Context context, List<ShowBigIdBean> list) {mContext = context;mList = list;}@NonNull@Overridepublic MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(mContext).inflate(R.layout.item_img, parent, false);return new MyViewHolder(view);}@Overridepublic void onBindViewHolder(@NonNull MyViewHolder holder, int position) {holder.imageView.setImageResource(mList.get(position).getBigPicture());}@Overridepublic int getItemCount() {return mList.size();}class MyViewHolder extends RecyclerView.ViewHolder {private ImageView imageView;public MyViewHolder(@NonNull View itemView) {super(itemView);imageView = itemView.findViewById(R.id.img);}}
}
  1. ShowBigIdBean.java
public class ShowBigIdBean {public ShowBigIdBean(int bigPicture, int icon, String iconTitle) {this.bigPicture = bigPicture;this.icon = icon;this.iconTitle = iconTitle;}private int bigPicture;private int icon;private String iconTitle;public int getBigPicture() {return bigPicture;}public void setBigPicture(int bigPicture) {this.bigPicture = bigPicture;}public int getIcon() {return icon;}public void setIcon(int icon) {this.icon = icon;}public String getIconTitle() {return iconTitle;}public void setIconTitle(String iconTitle) {this.iconTitle = iconTitle;}
}
  1. item_img.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tool="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/img"android:layout_width="match_parent"android:layout_height="match_parent" /></RelativeLayout>
  1. item_icon_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tool="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/icon"android:layout_width="40dp"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_marginTop="20dp" /><ImageViewandroid:id="@+id/circle"android:visibility="gone"android:layout_width="40dp"android:layout_height="40dp"android:layout_centerHorizontal="true"android:layout_marginTop="20dp"android:background="@drawable/item_circle_shape" /><TextViewandroid:id="@+id/icon_des"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/icon"android:layout_centerHorizontal="true"android:layout_marginTop="10dp"android:textColor="@color/black"android:textSize="15sp"tool:text="" /></RelativeLayout>
  1. item_circle_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="250dp" /><solid android:color="#00000000" /><stroke android:color="#CD7F32" android:width="1dp"/>
</shape>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39587.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何進行無線網絡滲透測試?

今天我們將繼續深入探討Kali Linux的應用&#xff0c;這次我們將重點介紹如何使用Kali Linux進行無線網絡滲透測試。無線網絡滲透測試是評估無線網絡安全性的重要步驟&#xff0c;而Kali Linux作為一款專業的滲透測試發行版&#xff0c;提供了豐富的工具來幫助你進行這項任務。…

c++中const修飾成員函數的問題

問題引入&#xff1a; 看下面這一段代碼&#xff1a; class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << "Print()" << endl;cout << "year:" << _year <&…

面試熱題(全排列)

給定一個不含重復數字的整數數組 nums &#xff0c;返回其 所有可能的全排列 。可以 按任意順序 返回答案。 輸入&#xff1a;nums [1,2,3] 輸出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 先在這里說明一下排列和組合的區別? 組合&#xff1a;是指從一…

前端三劍客

三劍客 萬維網聯盟&#xff08; World Wide Web Consortium &#xff09;&#xff0c;創建于1994年10月&#xff0c;主要工作是對 web 進行標準化。 ? 該組織定義了網頁的開發需要如下3門技術&#xff1a; ? - HTML:定義網頁的結構 - CSS: 定義網頁的表現&#xff0c;樣式 -…

開源數據庫Mysql_DBA運維實戰 (名詞解釋)

SQL&#xff08;Structured Query Language 即結構化查詢語言&#xff09; SQL語言主要用于存取數據、查詢數據、更新數據和管理關系數據庫系統&#xff0c;SQL語言由IBM開發。 SQL語言分類&#xff1a; DDL語句 數據庫定義語言&#xff1a;數據庫、表、視圖、索引、存儲過程…

Steam 靈感的游戲卡懸停效果

先看效果&#xff1a; 再看代碼&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Steam 靈感的游戲卡懸停效果</title><style>* {margin: …

構建高效外賣系統平臺:從需求到實現

隨著科技的不斷進步和人們生活節奏的加快&#xff0c;外賣成為了越來越多人的飲食選擇。為了滿足這一需求&#xff0c;開發一套高效的外賣系統平臺變得尤為重要。本文將從需求分析開始&#xff0c;逐步引導您了解如何開發一套完整的外賣系統平臺。 第一步&#xff1a;需求分析…

分類預測 | MATLAB實現EVO-CNN多輸入分類預測

分類預測 | MATLAB實現EVO-CNN多輸入分類預測 目錄 分類預測 | MATLAB實現EVO-CNN多輸入分類預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 1.MATLAB實現EVO-CNN多輸入分類預測 2.代碼說明&#xff1a;量谷優化卷積神經網絡的數據分類預測&#xff1a;要求于Matlab …

【hadoop】windows上hadoop環境的搭建步驟

文章目錄 前言基礎環境下載hadoop安裝包下載hadoop在windows中的依賴配置環境變量 Hadoop hdfs搭建創建hadfs數據目錄修改JAVA依賴修改配置文件初始化hdfs namenode啟動hdfs 前言 在大數據開發領域中&#xff0c;不得不說說傳統經典的hadoop基礎計算框架。一般我們都會將hadoo…

計算機視覺目標檢測性能指標

目錄 精確率&#xff08;Precision&#xff09;和召回率&#xff08;Recall&#xff09; F1分數&#xff08;F1 Score&#xff09; IoU&#xff08;Intersection over Union&#xff09; P-R曲線&#xff08;Precision-Recall Curve&#xff09;和 AP mAP&#xff08;mean…

Leetcode-每日一題【劍指 Offer 30. 包含min函數的棧】

題目 定義棧的數據結構&#xff0c;請在該類型中實現一個能夠得到棧的最小元素的 min 函數在該棧中&#xff0c;調用 min、push 及 pop 的時間復雜度都是 O(1)。 示例: MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack…

【mysql】事務的四種特性的理解

&#x1f307;個人主頁&#xff1a;平凡的小蘇 &#x1f4da;學習格言&#xff1a;命運給你一個低的起點&#xff0c;是想看你精彩的翻盤&#xff0c;而不是讓你自甘墮落&#xff0c;腳下的路雖然難走&#xff0c;但我還能走&#xff0c;比起向陽而生&#xff0c;我更想嘗試逆風…

TOMCAT基礎

tomcat是一個基于Java開發的&#xff0c;開放源代碼的web應用服務器。它可以解析html頁面中的java代碼&#xff0c;執行動態請求&#xff0c;實現動態頁面。核心功能是將收到的http請求處理并轉發給適當的servlet來處理&#xff0c;然后將響應返回給客戶端。 優點 1&#xff0c…

Django實現音樂網站 ⑼

使用Python Django框架制作一個音樂網站&#xff0c; 本篇主要是后臺對專輯、首頁輪播圖原有功能的基礎上進行部分功能實現和顯示優化。 目錄 專輯功能優化 新增編輯 專輯語種改為下拉選項 添加單曲優化顯示 新增單曲多選 更新歌手專輯數、專輯單曲數 獲取歌手專輯數 保…

【并發編程】自研數據同步工具的優化:創建線程池多線程異步去分頁調用其他服務接口獲取海量數據

文章目錄 場景&#xff1a;解決方案 場景&#xff1a; 前段時間在做一個數據同步工具&#xff0c;其中一個服務的任務是調用A服務的接口&#xff0c;將數據庫中指定數據請求過來&#xff0c;交給kafka去判斷哪些數據是需要新增&#xff0c;哪些數據是需要修改的。 剛開始的設…

Character Animation With Direct3D 讀書筆記

角色動畫簡介 2D動畫&#xff1a;循環播放多張圖片 3D動畫&#xff1a; 骨骼動畫、變形動畫 DirectX入門 Win32 應用程序 Application類&#xff1a;處理主程序循環&#xff0c;圖形設備的初始化 Init&#xff1a;加載資源并創建圖形設備Update&#xff1a;更新游戲世界&am…

Vue中子組件修改父組件傳來的Prop值

vue中子組件不能直接修改父組件傳來的prop值&#xff0c;Prop 是一種傳遞數據的機制&#xff0c;父組件通過 Prop 向子組件傳遞數據&#xff0c;子組件通過 Props 接收父組件傳遞過來的數據&#xff0c;這些數據被封裝成一個個解構體形式的對象&#xff0c;不能直接進行修改。這…

React 18 更新 state 中的對象

參考文章 更新 state 中的對象 state 中可以保存任意類型的 JavaScript 值&#xff0c;包括對象。但是&#xff0c;不應該直接修改存放在 React state 中的對象。相反&#xff0c;當想要更新一個對象時&#xff0c;需要創建一個新的對象&#xff08;或者將其拷貝一份&#xf…

圖像去雨、去雪、去霧論文學習記錄

All_in_One_Bad_Weather_Removal_Using_Architectural_Search 這篇論文發表于CVPR2020&#xff0c;提出一種可以應對多種惡劣天氣的去噪模型&#xff0c;可以同時進行去雨、去雪、去霧操作。但該部分代碼似乎沒有開源。 提出的問題&#xff1a; 當下的模型只能針對一種惡劣天氣…

【ARM 嵌入式 編譯系列 4.1 -- GCC 編譯屬性 likely與unlikely 學習】

文章目錄 GCC likely與unlikely 介紹linux 內核中的 likely/unlikely上篇文章:ARM 嵌入式 編譯系列 4 – GCC 編譯屬性 __read_mostly 介紹 下篇文章: ARM 嵌入式 編譯系列 4.2 – GCC 鏈接規范 extern “C“ 介紹 GCC likely與unlikely 介紹 likely 和 unlikely 是GCC編譯器…