diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 04417f56..1d8ed60a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -44,22 +44,25 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:ignore="UnusedAttribute"> + - + android:label="@string/title_plugin_manage" + android:windowSoftInputMode="adjustResize" /> - + android:theme="@style/AppTheme.PhotoView" + android:windowSoftInputMode="adjustResize" /> + = mutableListOf() + @RequiresApi(api = 28) + fun setWebViewPath(context: Context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + val processName = getProcessName(context) + if (applicationContext.packageName != processName) { //判断不等于默认进程名称 + WebView.setDataDirectorySuffix(processName!!) + } + } + } + + private fun getProcessName(context: Context): String? { + val manager = context.getSystemService(ACTIVITY_SERVICE) as ActivityManager + for (processInfo in manager.runningAppProcesses) { + if (processInfo.pid == Process.myPid()) { + return processInfo.processName + } + } + return null + } + override fun onCreate() { instance = this super.onCreate() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + setWebViewPath(this) + } ThemeUtils.init(ThemeDelegate) AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) LitePal.initialize(this) @@ -177,6 +211,18 @@ class BaseApplication : Application(), IApp { PluginManager.init(this) } + //禁止app字体大小跟随系统字体大小调节 + override fun getResources(): Resources { + val fontScale = appPreferences.fontScale + val resources = super.getResources() + if (resources.configuration.fontScale != fontScale) { + val configuration = resources.configuration + configuration.fontScale = fontScale + resources.updateConfiguration(configuration, resources.displayMetrics) + } + return resources + } + /** * 添加Activity */ diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/AppFontSizeActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/AppFontSizeActivity.kt new file mode 100644 index 00000000..f1848a0b --- /dev/null +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/AppFontSizeActivity.kt @@ -0,0 +1,127 @@ +package com.huanchengfly.tieba.post.activities + +import android.os.Bundle +import android.util.TypedValue +import android.widget.SeekBar +import android.widget.TextView +import androidx.appcompat.widget.Toolbar +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import butterknife.BindView +import com.google.android.material.appbar.CollapsingToolbarLayout +import com.huanchengfly.tieba.post.* +import com.huanchengfly.tieba.post.adapters.ChatBubbleStyleAdapter +import com.huanchengfly.tieba.post.components.MyLinearLayoutManager +import com.huanchengfly.tieba.post.utils.ThemeUtil +import com.huanchengfly.tieba.post.widgets.RulerSeekBar + + +class AppFontSizeActivity : BaseActivity() { + @BindView(R.id.toolbar) + lateinit var toolbar: Toolbar + + @BindView(R.id.collapsing_toolbar) + lateinit var collapsingToolbar: CollapsingToolbarLayout + + @BindView(R.id.app_font_size_seekbar) + lateinit var seekBar: RulerSeekBar + + @BindView(R.id.app_font_size_text) + lateinit var sizeText: TextView + + @BindView(R.id.app_font_size_bubbles) + lateinit var chatBubblesRv: RecyclerView + + var oldFontSize: Float = 0f + var finished: Boolean = false + + private val bubblesAdapter: ChatBubbleStyleAdapter by lazy { + ChatBubbleStyleAdapter( + this, + listOf( + ChatBubbleStyleAdapter.Bubble( + getString(R.string.bubble_want_change_font_size), + ChatBubbleStyleAdapter.Bubble.POSITION_RIGHT + ), + ChatBubbleStyleAdapter.Bubble(getString(R.string.bubble_change_font_size)) + ) + ) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + ThemeUtil.setTranslucentThemeBackground(findViewById(R.id.background)) + setSupportActionBar(toolbar) + supportActionBar?.apply { + setDisplayHomeAsUpEnabled(true) + title = this@AppFontSizeActivity.title + } + collapsingToolbar.title = title + oldFontSize = appPreferences.fontScale + chatBubblesRv.apply { + layoutManager = + MyLinearLayoutManager(this@AppFontSizeActivity, LinearLayoutManager.VERTICAL, false) + adapter = bubblesAdapter + } + val progress = + ((appPreferences.fontScale * 1000L - FONT_SCALE_MIN * 1000L).toInt()) / ((FONT_SCALE_STEP * 1000L).toInt()) + seekBar.progress = progress + updateSizeText(progress) + seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { + val fontScale = FONT_SCALE_MIN + progress * FONT_SCALE_STEP + appPreferences.fontScale = fontScale + updatePreview(fontScale) + updateSizeText(progress) + } + + override fun onStartTrackingTouch(seekBar: SeekBar?) {} + + override fun onStopTrackingTouch(seekBar: SeekBar?) {} + }) + } + + override fun finish() { + if (!finished && oldFontSize != appPreferences.fontScale) { + finished = true + toastShort(R.string.toast_after_change_will_restart) + BaseApplication.instance.removeAllActivity() + goToActivity() + } + super.finish() + } + + fun updateSizeText(progress: Int) { + val sizeTexts = SIZE_TEXT_MAPPING.filterValues { + progress in it + } + if (sizeTexts.isNotEmpty()) { + sizeText.setText(sizeTexts.map { it.key }[0]) + } + } + + fun updatePreview(fontScale: Float = appPreferences.fontScale) { + bubblesAdapter.bubblesFontSize = 15f.dpToPxFloat() * fontScale + sizeText.setTextSize(TypedValue.COMPLEX_UNIT_PX, 16f.dpToPxFloat() * fontScale) + } + + override fun getLayoutId(): Int { + return R.layout.activity_app_font_size + } + + companion object { + const val FONT_SCALE_MIN = 0.8f + const val FONT_SCALE_MAX = 1.3f + const val FONT_SCALE_STEP = 0.05f + const val DEFAULT_FONT_SCALE = 1f + + val SIZE_TEXT_MAPPING = mapOf( + R.string.text_size_small to 0..1, + R.string.text_size_little_small to 2..3, + R.string.text_size_default to 4..4, + R.string.text_size_little_large to 5..6, + R.string.text_size_large to 7..8, + R.string.text_size_very_large to 9..10 + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt index 33cb4af2..6e1ffea1 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/BaseActivity.kt @@ -6,6 +6,7 @@ import android.app.Activity import android.app.Dialog import android.content.Context import android.content.res.ColorStateList +import android.content.res.Resources import android.graphics.Color import android.os.Bundle import android.text.TextUtils @@ -60,6 +61,18 @@ abstract class BaseActivity : SwipeBackActivity(), ExtraRefreshable, CoroutineSc Jzvd.releaseAllVideos() } + //禁止app字体大小跟随系统字体大小调节 + override fun getResources(): Resources { + val fontScale = appPreferences.fontScale + val resources = super.getResources() + if (resources.configuration.fontScale != fontScale) { + val configuration = resources.configuration + configuration.fontScale = fontScale + resources.updateConfiguration(configuration, resources.displayMetrics) + } + return resources + } + protected fun showDialog(dialog: Dialog): Boolean { if (isActivityRunning) { dialog.show() diff --git a/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt b/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt index 2396cf3e..f9d6c529 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/adapters/ChatBubbleStyleAdapter.kt @@ -1,6 +1,8 @@ package com.huanchengfly.tieba.post.adapters +import android.annotation.SuppressLint import android.content.Context +import android.util.TypedValue import android.view.Gravity import android.view.View import android.view.ViewGroup.LayoutParams.WRAP_CONTENT @@ -16,6 +18,13 @@ class ChatBubbleStyleAdapter( context: Context, bubbles: List ) : BaseSingleTypeAdapter(context, bubbles) { + var bubblesFontSize: Float = 0f + @SuppressLint("NotifyDataSetChanged") + set(value) { + field = value + notifyDataSetChanged() + } + override fun getItemLayoutId(): Int = R.layout.item_chat_bubble override fun convert(viewHolder: MyViewHolder, item: Bubble, position: Int) { @@ -34,12 +43,17 @@ class ChatBubbleStyleAdapter( Gravity.START } } - viewHolder.getView(R.id.chat_bubble_text).tintResId = - if (item.position == POSITION_RIGHT) { - R.color.default_color_on_accent - } else { - R.color.default_color_text + viewHolder.getView(R.id.chat_bubble_text).apply { + tintResId = + if (item.position == POSITION_RIGHT) { + R.color.default_color_on_accent + } else { + R.color.default_color_text + } + if (bubblesFontSize > 0f) { + setTextSize(TypedValue.COMPLEX_UNIT_PX, bubblesFontSize) } + } viewHolder.setText(R.id.chat_bubble_text, item.text) val customView = item.customViewBuilder?.invoke(context, item.position) if (customView != null) { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt index 67405110..fde37395 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt @@ -21,15 +21,29 @@ open class AppPreferencesUtils(context: Context) { var customPrimaryColor by SharedPreferenceDelegates.string(key = "custom_primary_color") - var customStatusBarFontDark by SharedPreferenceDelegates.boolean(defaultValue = false, key = "custom_status_bar_font_dark") + var customStatusBarFontDark by SharedPreferenceDelegates.boolean( + defaultValue = false, + key = "custom_status_bar_font_dark" + ) - var customToolbarPrimaryColor by SharedPreferenceDelegates.boolean(defaultValue = true, key = "custom_toolbar_primary_color") + var customToolbarPrimaryColor by SharedPreferenceDelegates.boolean( + defaultValue = true, + key = "custom_toolbar_primary_color" + ) - var defaultSortType by SharedPreferenceDelegates.string(key = "default_sort_type", defaultValue = "0") + var defaultSortType by SharedPreferenceDelegates.string( + key = "default_sort_type", + defaultValue = "0" + ) var darkTheme by SharedPreferenceDelegates.string(key = "dark_theme", defaultValue = "dark") - var followSystemNight by SharedPreferenceDelegates.boolean(defaultValue = true, key = "follow_system_night") + var followSystemNight by SharedPreferenceDelegates.boolean( + defaultValue = true, + key = "follow_system_night" + ) + + var fontScale by SharedPreferenceDelegates.float(defaultValue = 1.0f) var forumFabFunction by SharedPreferenceDelegates.string(defaultValue = "post") @@ -39,7 +53,10 @@ open class AppPreferencesUtils(context: Context) { var homePageScroll by SharedPreferenceDelegates.boolean(defaultValue = false) - var imageLoadType by SharedPreferenceDelegates.string(key = "image_load_type", defaultValue = "0") + var imageLoadType by SharedPreferenceDelegates.string( + key = "image_load_type", + defaultValue = "0" + ) var listItemsBackgroundIntermixed by SharedPreferenceDelegates.boolean(defaultValue = true) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt index 815ee9a5..84675c24 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/TiebaUtil.kt @@ -63,13 +63,25 @@ object TiebaUtil { fun startSign(context: Context) { context.appPreferences.signDay = Calendar.getInstance()[Calendar.DAY_OF_MONTH] if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - context.startForegroundService(Intent(context, OKSignService::class.java) + context.startForegroundService( + Intent() + .setClassName( + context.packageName, + "${context.packageName}.services.OKSignService" + ) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - .setAction(OKSignService.ACTION_START_SIGN)) + .setAction(OKSignService.ACTION_START_SIGN) + ) } else { - context.startService(Intent(context, OKSignService::class.java) + context.startService( + Intent() + .setClassName( + context.packageName, + "${context.packageName}.services.OKSignService" + ) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - .setAction(OKSignService.ACTION_START_SIGN)) + .setAction(OKSignService.ACTION_START_SIGN) + ) } } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/widgets/RulerSeekBar.kt b/app/src/main/java/com/huanchengfly/tieba/post/widgets/RulerSeekBar.kt new file mode 100644 index 00000000..684a2ff4 --- /dev/null +++ b/app/src/main/java/com/huanchengfly/tieba/post/widgets/RulerSeekBar.kt @@ -0,0 +1,195 @@ +package com.huanchengfly.tieba.post.widgets + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.util.AttributeSet +import android.widget.AbsSeekBar +import androidx.appcompat.widget.AppCompatSeekBar +import com.huanchengfly.tieba.post.R +import com.huanchengfly.tieba.post.dpToPxFloat + +class RulerSeekBar : AppCompatSeekBar { + /** + * 刻度线画笔 + */ + private lateinit var mRulerPaint: Paint + + /** + * 刻度线的个数,等分数等于刻度线的个数加1 + */ + private var mRulerCount: Int = 0 + + /** + * 每条刻度线的宽度 + */ + private var mRulerSize: Float = 0f + + /** + * 刻度线的颜色 + */ + private var mRulerColor: Int = Color.WHITE + + /** + * 滑块上面是否要显示刻度线 + */ + private var isShowTopOfThumb: Boolean = false + + /** + * 边缘是否要显示刻度线 + */ + private var rulerOnEdge: Boolean = false + + constructor(context: Context) : this(context, null) + + constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, + attrs, + defStyleAttr + ) { + if (attrs != null) { + val array = getContext().obtainStyledAttributes( + attrs, + R.styleable.RulerSeekBar, + defStyleAttr, + 0 + ) + mRulerColor = array.getColor(R.styleable.RulerSeekBar_rulerColor, Color.WHITE) + mRulerCount = array.getInteger(R.styleable.RulerSeekBar_rulerCount, 5) + mRulerSize = array.getDimension(R.styleable.RulerSeekBar_rulerSize, 12f.dpToPxFloat()) + isShowTopOfThumb = array.getBoolean(R.styleable.RulerSeekBar_rulerShowTopOfThumb, false) + rulerOnEdge = array.getBoolean(R.styleable.RulerSeekBar_rulerOnEdge, false) + array.recycle() + } + init() + } + + /** + * 初始化 + */ + private fun init() { + //创建绘制刻度线的画笔 + mRulerPaint = Paint() + mRulerPaint.color = mRulerColor + mRulerPaint.isAntiAlias = true + + //Api21及以上调用,去掉滑块后面的背景 + splitTrack = false + } + + /** + * 重写onDraw方法绘制刻度线 + * + * @param canvas + */ + @SuppressLint("DiscouragedPrivateApi") + @Synchronized + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + + //极限条件校验 + if (width <= 0 || mRulerCount <= 0) { + return + } + + //计算刻度线的顶部坐标和底部坐标 + val rulerTop = (height / 2 - minimumHeight / 2) * 1F + val rulerBottom = rulerTop + minimumHeight + + val rulerCenterY = (rulerTop + rulerBottom) / 2 + + val rulerPadding = rulerCenterY - mRulerSize / 2 - rulerTop + + //获取每一份的长度 + val length = if (rulerOnEdge) { + (width - paddingLeft - paddingRight - (mRulerCount + 2) * mRulerSize - rulerPadding * 2) / (mRulerCount + 1) + } else { + (width - paddingLeft - paddingRight - mRulerCount * mRulerSize) / (mRulerCount + 1) + } + if (rulerOnEdge) { + canvas.drawCircle( + paddingLeft + rulerPadding + mRulerSize / 2, + rulerCenterY, + mRulerSize / 2, + mRulerPaint + ) + canvas.drawCircle( + paddingLeft + rulerPadding + (mRulerCount + 1) * (length + mRulerSize) + mRulerSize / 2, + rulerCenterY, + mRulerSize / 2, + mRulerPaint + ) + } + //绘制刻度线 + for (i in 1..mRulerCount) { + //计算刻度线的左边坐标和右边坐标 + val rulerLeft = if (rulerOnEdge) { + (i * length + i * mRulerSize + paddingLeft + rulerPadding) * 1F + } else { + (i * length + (i - 1) * mRulerSize + paddingLeft) * 1F + } + val rulerRight = rulerLeft + mRulerSize + + val rulerCenterX = (rulerLeft + rulerRight) / 2 + + //进行绘制 + canvas.drawCircle(rulerCenterX, rulerCenterY, mRulerSize / 2, mRulerPaint) + } + if (!isShowTopOfThumb) { + try { + val absSeekBarClazz = Class.forName("android.widget.AbsSeekBar") + val absSeekBarDrawThumbMethod = + absSeekBarClazz.getDeclaredMethod("drawThumb", Canvas::class.java) + absSeekBarDrawThumbMethod.isAccessible = true + absSeekBarDrawThumbMethod.invoke(this as AbsSeekBar, canvas) + } catch (e: Exception) { + e.printStackTrace() + } + } + } + + /** + * 设置刻度线的个数 + * + * @param mRulerCount + */ + fun setRulerCount(mRulerCount: Int) { + this.mRulerCount = mRulerCount + requestLayout() + } + + /** + * 设置刻度线的宽度,单位(px) + * + * @param mRulerWidth + */ + fun setRulerWidth(mRulerWidth: Int) { + this.mRulerSize = mRulerWidth.toFloat() + requestLayout() + } + + /** + * 设置刻度线的颜色 + * + * @param mRulerColor + */ + fun setRulerColor(mRulerColor: Int) { + this.mRulerColor = mRulerColor + mRulerPaint.color = mRulerColor + requestLayout() + } + + /** + * 滑块上面是否需要显示刻度线 + * + * @param isShowTopOfThumb + */ + fun setShowTopOfThumb(isShowTopOfThumb: Boolean) { + this.isShowTopOfThumb = isShowTopOfThumb + requestLayout() + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/drawable_progress_font_size.xml b/app/src/main/res/drawable/drawable_progress_font_size.xml new file mode 100644 index 00000000..4869e83a --- /dev/null +++ b/app/src/main/res/drawable/drawable_progress_font_size.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/drawable_thumb_font_size.xml b/app/src/main/res/drawable/drawable_thumb_font_size.xml new file mode 100644 index 00000000..b39a9378 --- /dev/null +++ b/app/src/main/res/drawable/drawable_thumb_font_size.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_round_font_download.xml b/app/src/main/res/drawable/ic_round_font_download.xml new file mode 100644 index 00000000..8a05e3e8 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_font_download.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_app_font_size.xml b/app/src/main/res/layout/activity_app_font_size.xml new file mode 100644 index 00000000..67a41c7b --- /dev/null +++ b/app/src/main/res/layout/activity_app_font_size.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_theme_color.xml b/app/src/main/res/layout/activity_theme_color.xml index 43dff924..53adfb59 100644 --- a/app/src/main/res/layout/activity_theme_color.xml +++ b/app/src/main/res/layout/activity_theme_color.xml @@ -5,7 +5,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:backgroundTint="@color/default_color_window_background" - android:id="@+id/background"> + android:id="@+id/background" + tools:context=".activities.AppThemeActivity"> diff --git a/app/src/main/res/layout/item_chat_bubble.xml b/app/src/main/res/layout/item_chat_bubble.xml index 9bd98b39..771bb579 100644 --- a/app/src/main/res/layout/item_chat_bubble.xml +++ b/app/src/main/res/layout/item_chat_bubble.xml @@ -16,7 +16,7 @@ diff --git a/app/src/main/res/layout/plugin_asoul_cnki_dialog_check_result.xml b/app/src/main/res/layout/plugin_asoul_cnki_dialog_check_result.xml new file mode 100644 index 00000000..6c2659e4 --- /dev/null +++ b/app/src/main/res/layout/plugin_asoul_cnki_dialog_check_result.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 58a4fcd2..93869948 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -163,6 +163,14 @@ + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 033241db..d3ac4b23 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -44,14 +44,14 @@ #FF31343C #FFFFFFFF #FF545967 - #FF65696C + #FFA8ADBB #FFFFFFFF #FF474B54 #FF545967 #FF4477E0 #E6F2F7FB #6654585B - #FFF3F7F9 + #FFF3F7FA #FF8D9194 #FFFFFFFF #FFF3F7F9 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6edf43b2..a7a87ba6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -435,10 +435,7 @@ 已收藏 关注 粉丝 - 标题样式 - Title 字体大小 - 永a %1$s吧 ✓ %1$s吧 ✓ 经验 +%2$s 即将开始签到 @@ -468,4 +465,19 @@ 查询发言 附加功能管理 v%1$s · 作者 %2$s + 枝网查重 + 枝网文本复制检测报告(简洁)\n查重时间: %1$s\n总文字复制比: %2$s\n%3$s\n\n查重结果仅作参考,请注意辨别是否为原创 + 相似小作文: %1$s\n作者: %2$s\n发表时间: %3$s + 总文本复制比: %1$s + 相似小作文 (%1$d) + 复制查重结果 + 怎么调节应用内的字体大小呢? + 尝试着调节下方的控制条吧,可以在这里即时预览字体大小。 + + 较小 + 默认大小 + 较大 + + 极大 + 修改已保存,即将重启 App 以应用设置 diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 2fd88bd1..8cc10296 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -118,6 +118,7 @@ android:entries="@array/forum_fab_function_name_values" android:defaultValue="post" android:key="forumFabFunction" + android:icon="@drawable/ic_round_exit_to_app" android:title="@string/settings_forum_fab_function" /> + + + +