如何解决同步后如何更改 Gradle 文件中的值?是否可以覆盖 Gradle 方法?
有一个 AutoFitEditText
库,可以根据内容自动调整 EditText
的大小。
它已与 Gradle
成功同步,但 EditText 的最小字体太小 (12sp),我想将其设为 16sp。
负责这个的文件有路径:com/autofit/et/lib/AutoFitEditText.java
当我尝试更改值时:文件是只读的
这个文件的代码是:
package com.autofit.et.lib;
import ...
/**
* Created by varsovski on 29-Oct-15.
*/
public class AutoFitEditText extends EditText {
private static final int NO_LINE_LIMIT = -1;
private final RectF _availableSpaceRect = new RectF();
private final SparseIntArray _textCachedSizes = new SparseIntArray();
private final SizeTester _sizeTester;
private float _maxTextSize;
private float _spacingMult = 1.0f;
private float _spacingAdd = 0.0f;
private Float _minTextSize;
private int _widthLimit;
private int _maxLines;
private boolean _enableSizeCache = true;
private boolean _initiallized = false;
private TextPaint paint;
private interface SizeTester {
/**
* AutoFitEditText
*
* @param suggestedSize Size of text to be tested
* @param availableSpace available space in which text must fit
* @return an integer < 0 if after applying {@code suggestedSize} to
* text,it takes less space than {@code availableSpace},> 0
* otherwise
*/
public int onTestSize(int suggestedSize,RectF availableSpace);
}
public AutoFitEditText(final Context context) {
this(context,null,0);
}
public AutoFitEditText(final Context context,final AttributeSet attrs) {
this(context,attrs,final AttributeSet attrs,final int defStyle) {
super(context,defStyle);
// using the minimal recommended font size
_minTextSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,12,getResources().getDisplayMetrics());
_maxTextSize = getTextSize();
if (_maxLines == 0)
// no value was assigned during construction
_maxLines = NO_LINE_LIMIT;
// prepare size tester:
_sizeTester = new SizeTester() {
final RectF textRect = new RectF();
_minTextSize 正是我所需要的。如何覆盖这个? 我是 Kotlin 的新手。
解决方法
我对这个库没有任何具体了解,但查看您提供的示例,_minTextSize
设置为常量 12sp
并且库创建者没有公开它以进行更改。所以这并不是 Kotlin 或编码问题,而是库的开发者的设计决策。
因此,我建议您与他们联系并要求使用动态最小文本大小对其进行更新。否则,如果您仅将其用于测试目的或用于不会发布的个人项目,那么我认为您制作副本并自己编辑它们没有任何问题。只是要明确一点,我不建议将其用于任何特定的事情(非测试等),而无需与他们核实或查明它是否以开源方式运行。
为了完整起见,有一些方法可以通过反射来解决这个问题,但除非绝对必要,否则不应真正将其视为有效方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。