From 06465bac0faf3c49ec3554f165e01919f4112d1f Mon Sep 17 00:00:00 2001 From: linglongxin24 Date: Mon, 6 Jun 2016 16:41:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E9=80=82=E9=85=8D=E5=8D=95=E9=80=89=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libray_lxndroid/build.gradle | 2 +- .../autolayoutwidget/AutoTabLayout.java | 113 ++++++++++++++++++ libray_lxndroid/src/main/res/values/attrs.xml | 4 +- 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 libray_lxndroid/src/main/java/com/kejiang/yuandl/autolayoutwidget/AutoTabLayout.java diff --git a/libray_lxndroid/build.gradle b/libray_lxndroid/build.gradle index 7c0cc8c..a561a52 100644 --- a/libray_lxndroid/build.gradle +++ b/libray_lxndroid/build.gradle @@ -27,10 +27,10 @@ dependencies { compile 'org.xutils:xutils:3.3.34' compile 'com.android.support:recyclerview-v7:23.3.0' compile 'com.linglongxin24:UncaughtExceptionSendEmail:1.0.0' - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' // or 1.4-beta1 releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1' // or 1.4-beta1 testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1' + compile 'com.android.support:design:23.4.0' } diff --git a/libray_lxndroid/src/main/java/com/kejiang/yuandl/autolayoutwidget/AutoTabLayout.java b/libray_lxndroid/src/main/java/com/kejiang/yuandl/autolayoutwidget/AutoTabLayout.java new file mode 100644 index 0000000..9d24f10 --- /dev/null +++ b/libray_lxndroid/src/main/java/com/kejiang/yuandl/autolayoutwidget/AutoTabLayout.java @@ -0,0 +1,113 @@ +package com.zhy.autolayout.widget; + +import android.content.Context; +import android.content.res.TypedArray; +import android.support.design.widget.TabLayout; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.kejiang.yuandl.R; +import com.zhy.autolayout.utils.AutoUtils; +import com.zhy.autolayout.utils.DimenUtils; + +/** + * Created by zhy on 16/3/3. + */ +public class AutoTabLayout extends TabLayout +{ + private static final int NO_VALID = -1; + private int mTextSize; + private boolean mTextSizeBaseWidth = false; + + public AutoTabLayout(Context context) + { + this(context, null); + } + + public AutoTabLayout(Context context, AttributeSet attrs) + { + this(context, attrs, 0); + } + + public AutoTabLayout(Context context, AttributeSet attrs, int defStyleAttr) + { + super(context, attrs, defStyleAttr); + + initTextSizeBaseWidth(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TabLayout, + defStyleAttr, R.style.Widget_Design_TabLayout); + int tabTextAppearance = a.getResourceId(R.styleable.TabLayout_tabTextAppearance, + R.style.TextAppearance_Design_Tab); + + mTextSize = loadTextSizeFromTextAppearance(tabTextAppearance); + a.recycle(); + } + + private void initTextSizeBaseWidth(Context context, AttributeSet attrs) + { + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AutoTabLayout); + mTextSizeBaseWidth = a.getBoolean(R.styleable.AutoTabLayout_auto_textSize_base_width, false); + a.recycle(); + } + + private int loadTextSizeFromTextAppearance(int textAppearanceResId) + { + TypedArray a = getContext().obtainStyledAttributes(textAppearanceResId, + R.styleable.TextAppearance); + + try + { + if (!DimenUtils.isPxVal(a.peekValue(R.styleable.TextAppearance_android_textSize))) + return NO_VALID; + return a.getDimensionPixelSize(R.styleable.TextAppearance_android_textSize, NO_VALID); + } finally + { + a.recycle(); + } + } + + @Override + public void addTab(Tab tab, int position, boolean setSelected) + { + super.addTab(tab, position, setSelected); + setUpTabTextSize(tab); + } + + @Override + public void addTab(Tab tab, boolean setSelected) + { + super.addTab(tab, setSelected); + setUpTabTextSize(tab); + } + + private void setUpTabTextSize(Tab tab) + { + if (mTextSize == NO_VALID || tab.getCustomView() != null) return; + + ViewGroup tabGroup = (ViewGroup) getChildAt(0); + ViewGroup tabContainer = (ViewGroup) tabGroup.getChildAt(tab.getPosition()); + TextView textView = (TextView) tabContainer.getChildAt(1); + + + if (AutoUtils.autoed(textView)) + { + return; + } + int autoTextSize = 0 ; + if (mTextSizeBaseWidth) + { + autoTextSize = AutoUtils.getPercentWidthSize(mTextSize); + } else + { + autoTextSize = AutoUtils.getPercentHeightSize(mTextSize); + } + + + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, autoTextSize); + } + + +} diff --git a/libray_lxndroid/src/main/res/values/attrs.xml b/libray_lxndroid/src/main/res/values/attrs.xml index e07d020..8ddde25 100644 --- a/libray_lxndroid/src/main/res/values/attrs.xml +++ b/libray_lxndroid/src/main/res/values/attrs.xml @@ -82,5 +82,7 @@ - + + + \ No newline at end of file