以编程方式更改视图 class
Change view class programmatically
我正在使用 com.rockerhieu.emojicon 库,它运行良好,但是当在带有长文本的回收视图上使用时,滚动速度变慢。出于这个原因,我想在必须显示表情符号时使用 EmojiconTextView。所以,我想在我的 xml 资源上有一个 TextView 元素,并在需要时以编程方式将其转换为 EmojiconTextView。有没有办法做到这一点?我考虑过使用 ViewStub,但我没有找到用 TextView/EmojiconTextView 元素对其进行膨胀的方法。
提前致谢。
尝试以编程方式创建 UI,而不是使用 XML 创建 UI 的声明方式。
考虑到您在 XML 中定义了 LinerLayout
:
<LinearLayout
android:id="@+id/linearMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
然后您可以通过编程方式添加 EmojiconTextView
和 TextView
:
final LinearLayout lm = (LinearLayout) findViewById(R.id.linearMain);
LayoutParams lpView = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
if (mustShowEmoji) {
EmojiconTextView etv = new EmojiconTextView(this);
etv.setLayoutParams(lpView);
etv.setText("TextView containing emoji");
lm.addView(etv);
} else {
TextView tv = new TextView(this);
tv.setLayoutParams(lpView);
tv.setText("TextView");
lm .addView(tv);
}
我正在使用 com.rockerhieu.emojicon 库,它运行良好,但是当在带有长文本的回收视图上使用时,滚动速度变慢。出于这个原因,我想在必须显示表情符号时使用 EmojiconTextView。所以,我想在我的 xml 资源上有一个 TextView 元素,并在需要时以编程方式将其转换为 EmojiconTextView。有没有办法做到这一点?我考虑过使用 ViewStub,但我没有找到用 TextView/EmojiconTextView 元素对其进行膨胀的方法。
提前致谢。
尝试以编程方式创建 UI,而不是使用 XML 创建 UI 的声明方式。
考虑到您在 XML 中定义了 LinerLayout
:
<LinearLayout
android:id="@+id/linearMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
然后您可以通过编程方式添加 EmojiconTextView
和 TextView
:
final LinearLayout lm = (LinearLayout) findViewById(R.id.linearMain);
LayoutParams lpView = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
if (mustShowEmoji) {
EmojiconTextView etv = new EmojiconTextView(this);
etv.setLayoutParams(lpView);
etv.setText("TextView containing emoji");
lm.addView(etv);
} else {
TextView tv = new TextView(this);
tv.setLayoutParams(lpView);
tv.setText("TextView");
lm .addView(tv);
}