Android --- TabHost 切换时,改变选项卡下字体的状态(大小、加粗、默认被选中第一个)
生活随笔
收集整理的這篇文章主要介紹了
Android --- TabHost 切换时,改变选项卡下字体的状态(大小、加粗、默认被选中第一个)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上效果圖:
MiddleFragment.java 代碼如下
import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TabHost; import android.widget.TabWidget; import android.widget.TextView;、 import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import com.gxuwz.yixin.R; import java.util.List; import java.util.Map;// 初中 Fragment public class MiddleFragment extends Fragment {private View view;TabHost tabHost;String subjectArray[]; // 科目private List<Map<String,Object>> dataList;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {view = inflater.inflate(R.layout.fragment_middle,container,false);initView();tabHost.setup();//動態載入xmlinflater.inflate(R.layout.fragment_first_grade, tabHost.getTabContentView());inflater.inflate(R.layout.fragment_two_grade, tabHost.getTabContentView());initData();initEvent();initAdapter();return view;}public void initView() {subjectArray = getContext().getResources().getStringArray(R.array.subjects);tabHost = view.findViewById(android.R.id.tabhost);}public void initData() {tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(subjectArray[0]).setContent(R.id.tab01));tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator(subjectArray[1]).setContent(R.id.tab02));//設置 TabWidget 的布局參數final TabWidget tabWidget = tabHost.getTabWidget();// tabHost 選項卡改變的時候tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {@Overridepublic void onTabChanged(String tabId) {for(int i = 0; i < tabWidget.getChildCount(); i++) {View tabView = tabWidget.getChildAt(i);TextView tv= tabWidget.getChildAt(i).findViewById(android.R.id.title);if(tabHost.getCurrentTab() == i) { // 選中tabView.setBackgroundResource(R.drawable.tabhost_selected_true);tv.setTextSize(14);} else { // 未選中tabView.setBackgroundResource(R.drawable.tabhost_selected_false);tv.setTextSize(12);}}}});for (int i = 0; i < tabWidget.getChildCount(); i++) {View view = tabWidget.getChildAt(i);LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();// 設置默認的選項卡背景顏色與字體大小TextView textView = tabWidget.getChildAt(i).findViewById(android.R.id.title);//view.setBackgroundColor(R.color.grey2);textView.setTextSize(12);// 設置第一個選項卡被選中時的樣式TextView tvDefault = tabWidget.getChildAt(0).findViewById(android.R.id.title);tabWidget.getChildAt(0).setBackgroundResource(R.drawable.tabhost_selected_true);tvDefault.setTextSize(14);//獲取tabs圖片;//ImageView iv=(ImageView)tabWidget.getChildAt(i).findViewById(android.R.id.icon);layoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT;layoutParams.height = 130;layoutParams.weight = 0.0f;}}public void initEvent() {}public void initAdapter() {} }fragment_middle 代碼如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".activity.MainActivity"><TabHostandroid:id="@android:id/tabhost"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignParentLeft="true"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><TabWidgetandroid:id="@android:id/tabs"android:layout_width="90dp"android:layout_height="match_parent"android:orientation="vertical"android:gravity="top"></TabWidget><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="match_parent"android:layout_height="match_parent" ></FrameLayout></LinearLayout></TabHost> </RelativeLayout>res/values/string.xml 中加入
<string-array name="subjects"><item>語文</item><item>數學</item> </string-array>選中的背景樣式
tabhost_selected_true.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!-- 連框顏色值 --><item android:height="110dp" android:gravity="center_vertical"><shape><solid android:color="@color/blue" /></shape></item><!-- 主體背景顏色值 --><item android:left="10px" ><!--邊框里面背景顏色 白色--><shape><solid android:color="@color/white" /></shape></item> </layer-list>未選中的背景樣式
tabhost_selected_false.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"><solid android:color="@color/grey2"></solid> </shape>如果缺少哪一個文件,請在評論區留言
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Android --- TabHost 切换时,改变选项卡下字体的状态(大小、加粗、默认被选中第一个)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android --- 刚刚进入 Act
- 下一篇: Android --- 两种设置字体加粗