国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android中修改TabLayout底部導(dǎo)航條Indicator長(zhǎng)短的方法

2019-12-12 02:43:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

對(duì)于Tablayout相信大家都不陌生,在開發(fā)中使用的應(yīng)該很頻繁了,但是底部導(dǎo)航條長(zhǎng)短是固定死的,需要自己來(lái)改動(dòng)長(zhǎng)短,找了半天沒(méi)找著方法,看了下官方建議,可以通過(guò)映射來(lái)修改自己想要的長(zhǎng)短,其實(shí)也就幾行代碼的問(wèn)題。

看代碼:

 public static void setIndicator(Context context, TabLayout tabs, int leftDip, int rightDip) {  Class<?> tabLayout = tabs.getClass();  Field tabStrip = null;  try {   tabStrip = tabLayout.getDeclaredField("mTabStrip");  } catch (NoSuchFieldException e) {   e.printStackTrace();  }  tabStrip.setAccessible(true);  LinearLayout ll_tab = null;  try {   ll_tab = (LinearLayout) tabStrip.get(tabs);  } catch (IllegalAccessException e) {   e.printStackTrace();  }  int left = (int) (getDisplayMetrics(context).density * leftDip);  int right = (int) (getDisplayMetrics(context).density * rightDip);  for (int i = 0; i < ll_tab.getChildCount(); i++) {   View child = ll_tab.getChildAt(i);   child.setPadding(0, 0, 0, 0);   LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1);   params.leftMargin = left;   params.rightMargin = right;   child.setLayoutParams(params);   child.invalidate();  } }

leftDip和rightDip是左右間距,根據(jù)自己的需要來(lái)設(shè)置,直接調(diào)用即可。

很多同學(xué)都遇到問(wèn)題,這里附上源碼,大家可以看看:

package com.example.donghe.myrefreshview;import android.app.Activity;import android.content.Context;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentStatePagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.DisplayMetrics;import android.util.TypedValue;import android.view.View;import android.widget.LinearLayout;import android.widget.TableLayout;import java.lang.reflect.Field;public class MainActivity extends AppCompatActivity { private static int TAB_MARGIN_DIP = 11; TabLayout tableLayout; ViewPager viewPager; RankingPagerAdapter adapter; String [] strings = {"皇帝","丞相","尚書","太監(jiān)"}; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  tableLayout = (TabLayout) findViewById(R.id.tabs_ranking);  viewPager = (ViewPager) findViewById(R.id.container_ranking);  adapter = new RankingPagerAdapter(getSupportFragmentManager());  viewPager.setAdapter(adapter);  tableLayout.setupWithViewPager(viewPager);  tableLayout.setTabTextColors(getResources().getColor(R.color.black), getResources().getColor(R.color.red_pre));  tableLayout.setTabsFromPagerAdapter(adapter);  setIndicator(this, tableLayout, TAB_MARGIN_DIP, TAB_MARGIN_DIP); } private class RankingPagerAdapter extends FragmentStatePagerAdapter {  public RankingPagerAdapter(FragmentManager fm) {   super(fm);  }  @Override  public Fragment getItem(int position) {   return new FuelFragment().newInstance(position, strings[position]);  }  @Override  public int getCount() {   return strings.length;  }  @Override  public CharSequence getPageTitle(int position) {   return strings[position];  } } public static void setIndicator(Context context, TabLayout tabs, int leftDip, int rightDip) {  Class<?> tabLayout = tabs.getClass();  Field tabStrip = null;  try {   tabStrip = tabLayout.getDeclaredField("mTabStrip");  } catch (NoSuchFieldException e) {   e.printStackTrace();  }  tabStrip.setAccessible(true);  LinearLayout ll_tab = null;  try {   ll_tab = (LinearLayout) tabStrip.get(tabs);  } catch (IllegalAccessException e) {   e.printStackTrace();  }  int left = (int) (getDisplayMetrics(context).density * leftDip);  int right = (int) (getDisplayMetrics(context).density * rightDip);  for (int i = 0; i < ll_tab.getChildCount(); i++) {   View child = ll_tab.getChildAt(i);   child.setPadding(0, 0, 0, 0);   LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1);   params.leftMargin = left;   params.rightMargin = right;   child.setLayoutParams(params);   child.invalidate();  } } public static DisplayMetrics getDisplayMetrics(Context context) {  DisplayMetrics metric = new DisplayMetrics();  ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(metric);  return metric; } public static float getPXfromDP(float value, Context context) {  return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value,    context.getResources().getDisplayMetrics()); }}

Fragment:

package com.example.donghe.myrefreshview;import android.os.Bundle;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.TextView;/** * Created by dong.he on 2016/12/9. */public class FuelFragment extends Fragment { public static String TAB_POSITION; public static String TAB_NAME; private String tabId; private int tabPosition; public FuelFragment() { } public static Fragment newInstance(int tabPosition, String tabName) {  FuelFragment fragment = new FuelFragment();  Bundle bundle = new Bundle();  bundle.putInt(TAB_POSITION, tabPosition);  bundle.putString(TAB_NAME, tabName);  fragment.setArguments(bundle);  return fragment; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  return inflater.inflate(R.layout.layout, container, false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) {  super.onActivityCreated(savedInstanceState);  tabPosition = getArguments().getInt(TAB_POSITION, 0);  tabId = getArguments().getString(TAB_NAME);  ((TextView) getView().findViewById(R.id.text)).setText(tabId); }}

布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout  android:id="@+id/tabs_ranking"  android:layout_width="match_parent"  android:layout_height="wrap_content"  app:tabGravity="fill"  app:tabIndicatorColor="@color/red_pre"  app:tabMode="scrollable" /> <android.support.v4.view.ViewPager  android:id="@+id/container_ranking"  android:layout_width="match_parent"  android:layout_height="match_parent" /></LinearLayout>

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)武林網(wǎng)的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丽江市| 衢州市| 托克逊县| 华亭县| 龙里县| 晋江市| 南部县| 大洼县| 襄城县| 浪卡子县| 余干县| 孟津县| 大厂| 玉树县| 鄂温| 新沂市| 巴彦县| 房山区| 申扎县| 娄底市| 托克托县| 双江| 苍南县| 德清县| 舒城县| 威信县| 都江堰市| 灯塔市| 迁西县| 阿鲁科尔沁旗| 新乡县| 上饶市| 永新县| 辽源市| 社会| 武胜县| 乌苏市| 钦州市| 甘洛县| 崇礼县| 长宁区|