java - 如何在 TextView 中压倒自动调整大小?
问题描述
我有一个大文本要显示。但我在滑动时附加文本。向左滑动可查看另一行文本。向右滑动以清理 TextView。由于我的文本很长,我决定为其添加自动调整大小,但存在问题。我希望我的文本大小在向右滑动时恢复为默认值。
我尝试在 Listener 中添加 setTextSize 方法
swipeableView.setOnTouchListener(new OnSwipeTouchListener(CardsScrollActivity.this) {
@Override
public void onSwipeLeft() {
fade.reset();
questionView.clearAnimation();
questionView.startAnimation(fade);
tipsView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
tipsView.setText("");
sb.delete(0, sb.length());
i[0] = 0;
finalCycler.setNextCard();
questionView.setText(finalCycler.currentCard.getQuestion());
}
@Override
public void onSwipeRight() {
if (finalCycler.currentCard.getTips().length > i[0]) {
sb.append("\t\t");
sb.append(finalCycler.currentCard.getTips()[i[0]]).append('\n');
tipsView.setText(sb.toString());
i[0]++;
} else {
Toast toast = Toast.makeText(getApplicationContext(),
"No more tips", Toast.LENGTH_SHORT);
toast.show();
}
}
});
<TextView
android:id="@+id/tips"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:gravity="center_vertical"
android:scrollbars="vertical"
android:textSize="20sp"
app:autoSizeMaxTextSize="20sp"
app:autoSizeMinTextSize="5sp"
app:autoSizeStepGranularity="1sp"
app:autoSizeTextType="uniform" />
向右滑动后,我希望文本大小为 20sp。但它似乎是 autosize 的最后一个值。
解决方案
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
当您不希望使用该命令并为其提供 value时,您应该能够禁用自动调整大小功能AUTO_SIZE_TEXT_TYPE_NONE
。当您想重新启用它时,您将提供相同的功能,其值AUTO_SIZE_TEXT_TYPE_UNIFORM
是“统一缩放水平轴和垂直轴”。完整的解释在Android 的开发者网站上。
推荐阅读
- java - 在这种情况下,我该如何使用 '::' 操作?
- javascript - 如何使用 CSS 实现这种形状
- c# - 从 ASP.NET MVC 5 中的支付网关重定向回来后的会话破坏问题
- java - HWID 欺骗者 Java
- instrumentation - Opentelemetry 1.4.0 上下文传播
- excel - 在vba中处理日期
- javascript - 在 Typeorm 中根据 Environment 设置配置
- python - 解决编译inkscape和sage插件时缺少一些库文件的问题
- python - 给定COCO格式的坐标,在旋转图像后获取边界框和对象的新坐标
- python - 无法转换类型的对象
张量