android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......
生活随笔
收集整理的這篇文章主要介紹了
android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
坑1: TabItem添加id屬性,然后用注解綁定,發(fā)現(xiàn)找不到,臥槽。。。如下不要去找那個item。用tablayout去動態(tài)獲取。
<android.support.design.widget.TabLayoutandroid:id="@+id/fkg_tableyout"android:layout_width="match_parent"android:layout_height="32dp"app:elevation="0dp"app:layout_constraintTop_toTopOf="parent"app:tabGravity="center"app:tabIndicatorHeight="0dp"app:tabMode="fixed"app:tabPaddingEnd="16dp"app:tabPaddingStart="24dp"app:tabSelectedTextColor="@color/green_all_bg"app:tabTextAppearance="@style/MyCustomTextAppearance2"app:tabTextColor="@color/white"><android.support.design.widget.TabItemandroid:id="@+id/dfdsf"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="知識庫" /><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="新聞資訊" /></android.support.design.widget.TabLayout>坑2 - 這是我的方式,目前測試沒有問題: 循環(huán)獲取fkg_tableyout.getTabCount()的時候,不要直接在UI線程里面,太早了。雖然可以獲取到,但是此時tab位置不確定,你如果靠第幾個去設(shè)置背景,容易出問題。所以建議延遲獲取,或者如下:
HashMap<Integer, TabLayout.Tab> tabList = new HashMap<>();fkg_tableyout.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {// 這里才是加載完后獲取對應(yīng)位置的數(shù)據(jù),不然會錯位的if (tabList.size() <= 0) {for (int i = 0; i < fkg_tableyout.getTabCount(); ++i) {tabList.put(fkg_tableyout.getTabAt(i).getPosition(), fkg_tableyout.getTabAt(i));}}if (0 == tab.getPosition()) {ViewCompat.setBackground(tabList.get(0).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_white_shape));ViewCompat.setBackground(tabList.get(1).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_green_shape));} else {ViewCompat.setBackground(tabList.get(0).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_green_shape2));ViewCompat.setBackground(tabList.get(1).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_white_shape2));}}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});3. 建議最好還是動態(tài)創(chuàng)建Tab,然后添加,那樣比較靠譜。。 網(wǎng)上有類似動態(tài)修改的方式,你可以參考,遇到問題,多調(diào)試吧。。我也是折騰了一久。。。
這是Tablayout的配置。。。
<!--app:tabBackground="@drawable/tab_selector"--><android.support.design.widget.TabLayoutandroid:id="@+id/fkg_tableyout"android:layout_width="match_parent"android:layout_height="32dp"app:elevation="0dp"app:layout_constraintTop_toTopOf="parent"app:tabGravity="center"app:tabIndicatorHeight="0dp"app:tabMode="fixed"app:tabPaddingEnd="16dp"app:tabPaddingStart="24dp"app:tabSelectedTextColor="@color/green_all_bg"app:tabTextAppearance="@style/MyCustomTextAppearance2"app:tabTextColor="@color/white"><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:id="@+id/dfdsf"android:layout_height="wrap_content"android:text="知識庫" /><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="新聞資訊" /></android.support.design.widget.TabLayout>效果:
我之前都是動態(tài)創(chuàng)建的,哈哈。。這次嘗試了不太一樣的方式.......喵....
總結(jié)
以上是生活随笔為你收集整理的android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通信工程专业的一些小知识点
- 下一篇: 使用word完成毕业论文的所有详细步骤