0

Ich benutze com.rockerhieu.emojicon Bibliothek, die funktioniert gut, aber, wenn auf einem Recyclerview mit einem langen Text verwendet wird die Schriftrolle langsam. Aus diesem Grund möchte ich die EmojiconTextView nur verwenden, wenn ein Emoji gezeigt werden muss. Ich möchte also ein TextView-Element in meiner XML-Ressource haben und es bei Bedarf programmgesteuert in EmojiconTextView konvertieren. Gibt es einen Weg, das zu erreichen? Ich habe über die Verwendung von ViewStub nachgedacht, aber ich habe keine Möglichkeit gefunden, es mit einem TextView/EmojiconTextView-Element aufzublasen.Ändern Sie die Ansicht Klasse programmgesteuert

Vielen Dank im Voraus.

Antwort

0

Anstatt die deklarative Methode zum Erstellen Ihrer UI mithilfe von XML zu verwenden, erstellen Sie die UI programmgesteuert.

Betrachtet man LinerLayout in Ihrem XML definiert haben:

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

können Sie fügen Sie dann Ihre EmojiconTextView und TextView programmatisch:

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

Danke für deine Antwort. Ich hatte darüber nachgedacht, aber dann würde ich eine zusätzliche Viewgroup auf meinem Baum der Ansichten hinzufügen, und das würde ich gerne vermeiden. Im Moment scheint dies jedoch die beste Lösung zu sein. Danke vielmals – FVod