Skip to content

Commit 3fbbbe9

Browse files
committed
EasyIndicator新增indicator_background属性,自定义背景颜色
1 parent 539b138 commit 3fbbbe9

File tree

3 files changed

+36
-27
lines changed

3 files changed

+36
-27
lines changed

app/src/main/res/layout/fragment_easy_indicator.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,17 @@
3737
android:layout_height="wrap_content"
3838
android:layout_gravity="center_horizontal"
3939
android:layout_marginTop="10dp"
40+
app:indicator_background="@color/xui_config_color_transparent"
4041
app:indicator_height="42dp"
4142
app:indicator_line_height="5dp"
4243
app:indicator_line_res="@drawable/shape_indicator_line"
4344
app:indicator_line_show="true"
4445
app:indicator_line_width="30dp"
4546
app:indicator_selected_color="#FF6100"
4647
app:indicator_textSize="14sp"
47-
app:indicator_vertical_line_h="30dp"
48-
app:indicator_vertical_line_w="1dp"
48+
app:indicator_vertical_line_color="@color/xui_config_color_white"
49+
app:indicator_vertical_line_h="20dp"
50+
app:indicator_vertical_line_w="1.5dp"
4951
app:indicator_width="300dp" />
5052

5153
<com.xuexiang.xui.widget.tabbar.EasyIndicator

xui_lib/src/main/java/com/xuexiang/xui/widget/tabbar/EasyIndicator.java

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -156,33 +156,36 @@ public EasyIndicator(Context context, AttributeSet attrs, int defStyleAttr) {
156156
*/
157157
private void init(Context context, AttributeSet attrs, int defStyleAttr) {
158158
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.EasyIndicator, defStyleAttr, 0);
159-
if (typedArray != null) {
160-
indicatorWidth = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_width, indicatorWidth);
161-
indicatorHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_height, indicatorHeight);
162-
indicatorLineShow = typedArray.getBoolean(R.styleable.EasyIndicator_indicator_line_show, indicatorLineShow);
163-
indicatorLineWidth = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_line_width, indicatorLineWidth);
164-
indicatorLineHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_line_height, indicatorLineHeight);
165-
indicatorLineColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_line_color, ThemeUtils.getMainThemeColor(getContext()));
166-
indicatorLineDrawable = ResUtils.getDrawableAttrRes(context, typedArray, R.styleable.EasyIndicator_indicator_line_res);
167-
indicatorBottomLineHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_bottom_line_height, indicatorBottomLineHeight);
168-
indicatorBottomLineColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_bottom_line_color, ThemeUtils.resolveColor(getContext(), R.attr.xui_config_color_separator_dark));
169-
indicatorSelectedColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_selected_color, ThemeUtils.getMainThemeColor(getContext()));
170-
indicatorNormalColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_normal_color, ResUtils.getColor(R.color.xui_config_color_black));
171-
indicatorTextSize = getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_textSize, (int) indicatorTextSize);
172-
indicatorVerticalLineWidth = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_vertical_line_w, indicatorVerticalLineWidth);
173-
indicatorVerticalLineColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_vertical_line_color, ThemeUtils.resolveColor(getContext(), R.attr.xui_config_color_separator_dark));
174-
indicatorVerticalLineHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_vertical_line_h, indicatorVerticalLineHeight);
175-
indicatorSelectTextSize = getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_select_textSize, 14);
176-
// 指引器不能超过屏幕的宽度
177-
indicatorWidth = Math.min(indicatorWidth, screenWidth);
178-
if (indicatorWidth == 0) {
179-
indicatorWidth = LayoutParams.MATCH_PARENT;
180-
}
181-
typedArray.recycle();
159+
indicatorWidth = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_width, indicatorWidth);
160+
indicatorHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_height, indicatorHeight);
161+
Drawable indicatorBgDrawable = ResUtils.getDrawableAttrRes(context, typedArray, R.styleable.EasyIndicator_indicator_background);
162+
indicatorLineShow = typedArray.getBoolean(R.styleable.EasyIndicator_indicator_line_show, indicatorLineShow);
163+
indicatorLineWidth = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_line_width, indicatorLineWidth);
164+
indicatorLineHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_line_height, indicatorLineHeight);
165+
indicatorLineColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_line_color, ThemeUtils.getMainThemeColor(getContext()));
166+
indicatorLineDrawable = ResUtils.getDrawableAttrRes(context, typedArray, R.styleable.EasyIndicator_indicator_line_res);
167+
indicatorBottomLineHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_bottom_line_height, indicatorBottomLineHeight);
168+
indicatorBottomLineColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_bottom_line_color, ThemeUtils.resolveColor(getContext(), R.attr.xui_config_color_separator_dark));
169+
indicatorSelectedColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_selected_color, ThemeUtils.getMainThemeColor(getContext()));
170+
indicatorNormalColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_normal_color, ResUtils.getColor(R.color.xui_config_color_black));
171+
indicatorTextSize = getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_textSize, (int) indicatorTextSize);
172+
indicatorVerticalLineWidth = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_vertical_line_w, indicatorVerticalLineWidth);
173+
indicatorVerticalLineColor = typedArray.getColor(R.styleable.EasyIndicator_indicator_vertical_line_color, ThemeUtils.resolveColor(getContext(), R.attr.xui_config_color_separator_dark));
174+
indicatorVerticalLineHeight = (int) getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_vertical_line_h, indicatorVerticalLineHeight);
175+
indicatorSelectTextSize = getDimensionPixelSize(typedArray, R.styleable.EasyIndicator_indicator_select_textSize, 14);
176+
typedArray.recycle();
177+
// 指引器不能超过屏幕的宽度
178+
indicatorWidth = Math.min(indicatorWidth, screenWidth);
179+
if (indicatorWidth == 0) {
180+
indicatorWidth = LayoutParams.MATCH_PARENT;
182181
}
183182
tabContent = new LinearLayout(getContext());
184183
LayoutParams params = new LayoutParams(indicatorWidth, LayoutParams.WRAP_CONTENT);
185-
tabContent.setBackgroundColor(Color.WHITE);
184+
if (indicatorBgDrawable != null) {
185+
tabContent.setBackground(indicatorBgDrawable);
186+
} else {
187+
tabContent.setBackgroundColor(Color.WHITE);
188+
}
186189
params.gravity = Gravity.CENTER;
187190
tabContent.setLayoutParams(params);
188191
tabContent.setGravity(Gravity.CENTER);
@@ -424,7 +427,9 @@ private void initScreenWidth() {
424427
DisplayMetrics dm = getResources().getDisplayMetrics();
425428
screenHeight = dm.heightPixels;
426429
screenWidth = dm.widthPixels;
427-
428430
}
429431

432+
public LinearLayout getTabContent() {
433+
return tabContent;
434+
}
430435
}

xui_lib/src/main/res/values/xui_attrs.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,6 +1286,8 @@
12861286
<attr name="indicator_width" format="dimension" />
12871287
<!--指示器的高度,默认45dp-->
12881288
<attr name="indicator_height" format="dimension" />
1289+
<!--指示器(整个Tab)的背景资源-->
1290+
<attr name="indicator_background" format="reference" />
12891291

12901292
<!--指示器文字的大小,默认14sp-->
12911293
<attr name="indicator_textSize" format="dimension" />

0 commit comments

Comments
 (0)