android - 片段中 TextSwitcher 的动态 TextSize
问题描述
我正在开发简单的 android 应用程序,它应该根据点击次数具有不同的文本和文本大小。为了实现,我使用了带有 TextSwitcher 的 ConstraintLayout 在文本发生变化时提供动画。以下是来源:
布局:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android.counter.layout_main">
<TextSwitcher
android:id="@+id/text_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inAnimation="@anim/push_down_in"
android:outAnimation="@anim/push_down_out" />
</android.support.constraint.ConstraintLayout>
代码:
private TextSwitcher mTextBody;
private int mTextSize = 20;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) {
View view = inflater.inflate(R.layout.layout_main, viewGroup, false);
mTextBody = (TextSwitcher) view.findViewById(R.id.text_body);
mTextBody.setFactory(mViewSwitcherFactory);
mTextBody.setText(getString(R.string.intro_text));
mTextBody.setOnClickListener(mOnSwitcherClickListener);
return view;
}
private ViewSwitcher.ViewFactory mViewSwitcherFactory = new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.CENTER);
textView.setTextSize(mTextSize);
return textView;
}
};
private View.OnClickListener mOnSwitcherClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
mTextSize = 40;
mTextBody.setText(getString(R.string.text_after_click));
}
};
介绍文本和大小的初始加载是好的,但是在执行点击它之后只有文本改变而不是文本大小。那么,问题是当涉及到 TextSwitcher 的 setFactory 方法时,如何动态更改文本大小(更大)?
任何帮助,将不胜感激。
解决方案
private View.OnClickListener mOnSwitcherClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
mTextSize = 40;
mTextBody.setText(getString(R.string.text_after_click));
}
};
在上述方法中,您没有更改文本大小,您仅更改文本
改变
private View.OnClickListener mOnSwitcherClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
mTextSize = 40;
TextView tv = (TextView)mTextBody.getCurrentView();
tv.setText(getString(R.string.text_after_click));
tv.setTextSize(mTextSize);
}
};
推荐阅读
- javascript - 使用ng-change时如何修改Angular js中的dom属性?
- javascript - 使用递归循环遍历数组数组
- docker - 无法访问 Docker Swarm 中服务的 HTTP 端点
- google-cloud-functions - GCP 松弛教程“斜线命令”;谷歌云功能部署失败
- go - 在 go 程序中检查 pod 是否在 k8s 集群上运行
- json - 如何在 Flutter 中使用 GSON 等价物
- excel - 尝试使用 MonthView 控件时的错误消息
- ruby-on-rails - 未定义的方法“protect_against_forgery?” 对于#<#
我正在努力解决,我认为这是一个简单的问题。我正在创建一个注册表单,您可以在其中创建帐户和用户(一个帐户可以有多个用户)。但是,在加载 new.html.erb 视图时,我收到以下错误:
undefined method `protect_against_forgery?' for #<#<Class:0x00>
- sql - 从非 Azure SQL 数据库恢复备份
- python - 为什么它打印两倍的“大”对角线(矩阵)