Skip to content

Commit 69dde5a

Browse files
graycreateclaude
andcommitted
fix: improve font size and layout for issue #39
- Increase font sizes: extra large (24dp), large (20dp), medium (17dp), small (15dp) - Improve dark mode text contrast with better opacity values - Add dynamic font size scaling to all list modules (News, DailyHot, TopicStar, SpecialCare) - Fix layout overlapping issue by repositioning title below time/comment elements - Add proper spacing between UI elements - Enhance line spacing for better readability Fixes #39 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 03ef207 commit 69dde5a

File tree

9 files changed

+135
-25
lines changed

9 files changed

+135
-25
lines changed

app/src/main/java/me/ghui/v2er/injector/module/DailyHotModule.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import me.ghui.v2er.module.user.UserHomeActivity;
1818
import me.ghui.v2er.network.bean.DailyHotInfo;
1919
import me.ghui.v2er.util.ViewUtils;
20+
import me.ghui.v2er.util.FontSizeUtil;
21+
import android.util.TypedValue;
2022

2123
/**
2224
* Created by ghui on 27/03/2017.
@@ -41,11 +43,26 @@ protected void convert(ViewHolder holder, DailyHotInfo.Item item, int position)
4143
.load(item.getMember().getAvatar())
4244
.placeholder(R.drawable.avatar_placeholder_drawable)
4345
.into((ImageView) holder.getView(R.id.avatar_img));
44-
holder.setText(R.id.user_name_tv, item.getMember().getUserName());
45-
holder.setText(R.id.time_tv, item.getTime());
46-
holder.setText(R.id.tagview, item.getNode().getTitle());
47-
holder.setText(R.id.title_tv, item.getTitle());
46+
47+
// Apply dynamic font sizing
48+
TextView titleTv = holder.getTextView(R.id.title_tv);
49+
titleTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getTitleSize());
50+
titleTv.setText(item.getTitle());
51+
52+
TextView userNameTv = holder.getTextView(R.id.user_name_tv);
53+
userNameTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
54+
userNameTv.setText(item.getMember().getUserName());
55+
56+
TextView timeTv = holder.getTextView(R.id.time_tv);
57+
timeTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
58+
timeTv.setText(item.getTime());
59+
60+
TextView tagTv = holder.getTextView(R.id.tagview);
61+
tagTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
62+
tagTv.setText(item.getNode().getTitle());
63+
4864
TextView commentTV = holder.getTextView(R.id.comment_num_tv);
65+
commentTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
4966
commentTV.setText("评论" + item.getReplies());
5067
ViewUtils.highlightCommentNum(commentTV);
5168
}

app/src/main/java/me/ghui/v2er/injector/module/NewsModule.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import me.ghui.v2er.network.bean.NewsInfo;
1919
import me.ghui.v2er.util.L;
2020
import me.ghui.v2er.util.ViewUtils;
21+
import me.ghui.v2er.util.FontSizeUtil;
2122
import me.ghui.v2er.widget.LoadMoreRecyclerView;
23+
import android.util.TypedValue;
2224

2325
/**
2426
* Created by ghui on 03/04/2017.
@@ -52,11 +54,26 @@ protected void convert(ViewHolder holder, NewsInfo.Item item, int position) {
5254
.load(item.getAvatar())
5355
.placeholder(R.drawable.avatar_placeholder_drawable)
5456
.into(holder.getImgView(R.id.avatar_img));
55-
holder.setText(R.id.user_name_tv, item.getUserName());
56-
holder.setText(R.id.time_tv, item.getTime());
57-
holder.setText(R.id.tagview, item.getTagName());
58-
holder.setText(R.id.title_tv, item.getTitle());
57+
58+
// Apply dynamic font sizing
59+
TextView titleTv = holder.getTextView(R.id.title_tv);
60+
titleTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getTitleSize());
61+
titleTv.setText(item.getTitle());
62+
63+
TextView userNameTv = holder.getTextView(R.id.user_name_tv);
64+
userNameTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
65+
userNameTv.setText(item.getUserName());
66+
67+
TextView timeTv = holder.getTextView(R.id.time_tv);
68+
timeTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
69+
timeTv.setText(item.getTime());
70+
71+
TextView tagTv = holder.getTextView(R.id.tagview);
72+
tagTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
73+
tagTv.setText(item.getTagName());
74+
5975
TextView commentTV = holder.getTextView(R.id.comment_num_tv);
76+
commentTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
6077
commentTV.setText("评论" + item.getReplies());
6178
ViewUtils.highlightCommentNum(commentTV);
6279
}

app/src/main/java/me/ghui/v2er/injector/module/SpecialCareModule.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import me.ghui.v2er.module.user.UserHomeActivity;
2020
import me.ghui.v2er.network.bean.CareInfo;
2121
import me.ghui.v2er.util.ViewUtils;
22+
import me.ghui.v2er.util.FontSizeUtil;
2223
import me.ghui.v2er.widget.LoadMoreRecyclerView;
24+
import android.util.TypedValue;
2325

2426
/**
2527
* Created by ghui on 16/05/2017.
@@ -43,17 +45,32 @@ protected void convert(ViewHolder holder, CareInfo.Item item, int position) {
4345
.load(item.getAvatar())
4446
.placeholder(R.drawable.avatar_placeholder_drawable)
4547
.into((ImageView) holder.getView(R.id.avatar_img));
46-
holder.setText(R.id.user_name_tv, item.getUserName());
48+
49+
// Apply dynamic font sizing
50+
TextView titleTv = holder.getTextView(R.id.title_tv);
51+
titleTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getTitleSize());
52+
titleTv.setText(item.getTitle());
53+
54+
TextView userNameTv = holder.getTextView(R.id.user_name_tv);
55+
userNameTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
56+
userNameTv.setText(item.getUserName());
57+
4758
// TODO: 2018/6/9 time is null
59+
TextView timeTv = holder.getTextView(R.id.time_tv);
4860
if (Check.isEmpty(item.getTime())) {
49-
holder.getView(R.id.time_tv).setVisibility(View.INVISIBLE);
61+
timeTv.setVisibility(View.INVISIBLE);
5062
} else {
51-
holder.getView(R.id.time_tv).setVisibility(View.VISIBLE);
52-
holder.setText(R.id.time_tv, item.getTime());
63+
timeTv.setVisibility(View.VISIBLE);
64+
timeTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
65+
timeTv.setText(item.getTime());
5366
}
54-
holder.setText(R.id.tagview, item.getTagName());
55-
holder.setText(R.id.title_tv, item.getTitle());
67+
68+
TextView tagTv = holder.getTextView(R.id.tagview);
69+
tagTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
70+
tagTv.setText(item.getTagName());
71+
5672
TextView commentTV = holder.getTextView(R.id.comment_num_tv);
73+
commentTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
5774
commentTV.setText("评论" + item.getComentNum());
5875
ViewUtils.highlightCommentNum(commentTV);
5976
}

app/src/main/java/me/ghui/v2er/injector/module/TopicStarModule.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
import me.ghui.v2er.module.user.UserHomeActivity;
1818
import me.ghui.v2er.network.bean.TopicStarInfo;
1919
import me.ghui.v2er.util.ViewUtils;
20+
import me.ghui.v2er.util.FontSizeUtil;
2021
import me.ghui.v2er.widget.LoadMoreRecyclerView;
22+
import android.util.TypedValue;
2123

2224
/**
2325
* Created by ghui on 17/05/2017.
@@ -40,11 +42,26 @@ protected void convert(ViewHolder holder, TopicStarInfo.Item item, int position)
4042
.load(item.getAvatar())
4143
.placeholder(R.drawable.avatar_placeholder_drawable)
4244
.into((ImageView) holder.getView(R.id.avatar_img));
43-
holder.setText(R.id.user_name_tv, item.getUserName());
44-
holder.setText(R.id.time_tv, item.getTime());
45-
holder.setText(R.id.tagview, item.getTag());
46-
holder.setText(R.id.title_tv, item.getTitle());
45+
46+
// Apply dynamic font sizing
47+
TextView titleTv = holder.getTextView(R.id.title_tv);
48+
titleTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getTitleSize());
49+
titleTv.setText(item.getTitle());
50+
51+
TextView userNameTv = holder.getTextView(R.id.user_name_tv);
52+
userNameTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
53+
userNameTv.setText(item.getUserName());
54+
55+
TextView timeTv = holder.getTextView(R.id.time_tv);
56+
timeTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
57+
timeTv.setText(item.getTime());
58+
59+
TextView tagTv = holder.getTextView(R.id.tagview);
60+
tagTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
61+
tagTv.setText(item.getTag());
62+
4763
TextView commentTV = holder.getTextView(R.id.comment_num_tv);
64+
commentTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, FontSizeUtil.getSubTextSize());
4865
commentTV.setText("评论" + item.getCommentNum());
4966
ViewUtils.highlightCommentNum(commentTV);
5067
}

app/src/main/java/me/ghui/v2er/util/FontSizeUtil.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,46 @@ public static float getContentSize() {
2626
return App.get().getResources().getDimension(id);
2727
}
2828

29+
public static float getTitleSize() {
30+
String size = Pref.read(R.string.pref_key_fontsize);
31+
int id;
32+
switch (size) {
33+
case "小":
34+
id = R.dimen.smallTextSize;
35+
break;
36+
case "大":
37+
id = R.dimen.largeTextSize;
38+
break;
39+
case "特大":
40+
id = R.dimen.extralargeTextSize;
41+
break;
42+
case "中":
43+
default:
44+
id = R.dimen.mediumTextSize;
45+
}
46+
return App.get().getResources().getDimension(id);
47+
}
48+
49+
public static float getSubTextSize() {
50+
String size = Pref.read(R.string.pref_key_fontsize);
51+
int id;
52+
switch (size) {
53+
case "小":
54+
id = R.dimen.microTextSize;
55+
break;
56+
case "大":
57+
id = R.dimen.mediumTextSize;
58+
break;
59+
case "特大":
60+
id = R.dimen.largeTextSize;
61+
break;
62+
case "中":
63+
default:
64+
id = R.dimen.smallTextSize;
65+
}
66+
return App.get().getResources().getDimension(id);
67+
}
68+
2969
public static float getHtmlFontSize() {
3070
return ScaleUtils.px2Dp(getContentSize());
3171
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
<me.ghui.v2er.widget.CommonTitleTextView
1313
android:id="@+id/title_tv"
1414
style="@style/TopicTitle"
15-
android:layout_below="@id/avatar_img"
15+
android:layout_below="@id/time_tv"
16+
android:layout_marginTop="8dp"
1617
tools:text="[macOS]有人用 magnet 分屏的吗?好像有会导致系统卡顿的奇怪是的呵呵,里" />
1718

1819
<de.hdodenhof.circleimageview.CircleImageView

app/src/main/res/values-night/colors.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
<color name="transparent_navbar_color">#66000000</color>
1818
<color name="default_page_bg">#ffffff</color>
1919
<color name="night_default_page_bg">#111214</color>
20-
<color name="night_bodyTextColor">#E6FFFFFF</color>
21-
<color name="night_hintTextColor">#B3B3B3</color>
20+
<color name="night_bodyTextColor">#F2FFFFFF</color>
21+
<color name="night_hintTextColor">#CCCCCC</color>
2222
<color name="autofill_color">#1A000000</color>
2323
<color name="autofill_color_night">#1AFFFFFF</color>
2424
</resources>

app/src/main/res/values/dimens.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<resources>
2-
<dimen name="extralargeTextSize">20dp</dimen>
3-
<dimen name="largeTextSize">18dp</dimen>
4-
<dimen name="mediumTextSize">16dp</dimen>
5-
<dimen name="smallTextSize">14dp</dimen>
2+
<dimen name="extralargeTextSize">24dp</dimen>
3+
<dimen name="largeTextSize">20dp</dimen>
4+
<dimen name="mediumTextSize">17dp</dimen>
5+
<dimen name="smallTextSize">15dp</dimen>
66

77
<dimen name="microTextSize">12dp</dimen>
88
<dimen name="tinyTextSize">10dp</dimen>

app/src/main/res/values/styles.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@
134134
<item name="android:textSize">@dimen/mediumTextSize</item>
135135
<item name="android:textStyle">normal</item>
136136
<item name="android:paddingTop">6dp</item>
137+
<item name="android:lineSpacingMultiplier">1.3</item>
137138
<!--<item name="android:transitionName">@string/share_element_topic_title</item>-->
138139
</style>
139140

0 commit comments

Comments
 (0)