以编程方式更改视图类

时间:2016-05-25 16:26:10

标签: android android-layout android-view textview android-inflate

我正在使用com.rockerhieu.emojicon库,它工作得很好,但是当在带有长文本的recyclerview上使用时,滚动速度很慢。出于这个原因,我想在必须显示表情符号时使用EmojiconTextView。所以,我希望在我的xml资源上有一个TextView元素,并在需要时以编程方式将其转换为EmojiconTextView。有没有办法实现这一目标?我想过使用ViewStub,但是我没有找到用TextView / EmojiconTextView元素对它进行充气的方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试以编程方式创建UI,而不是使用XML创建UI的声明方式。

考虑到您在XML中定义了LinerLayout

<LinearLayout
   android:id="@+id/linearMain"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">
</LinearLayout>

然后,您可以以编程方式添加EmojiconTextViewTextView

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);        
}