簡體   English   中英

在Android鍵盤中顯示自定義表情符號

[英]Show Custom emoticon in Android Keyboard

我一直在嘗試過去3天在默認的android消息視圖中顯示圖形自定義圖釋。 我已經成功地顯示了我的自定義表情符號來代替鍵。 現在的問題是我試圖在spanable字符串構建器中顯示drawable。 但是drawable只是沒有出現在鍵盤上。 這是迄今為止的代碼:

     SpannableString ss = new SpannableString(" "); 
                    Drawable d = getResources().getDrawable(R.drawable.a); 
                    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
//                  ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); 
                    ImageSpan span = new ImageSpan(d);
//                  ss.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

                    mComposing.append(":");
                    mComposing.setSpan(new ImageSpan(d), 0,1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    getCurrentInputConnection().commitText(mComposing, 1);

我已經嘗試了不同的方法以某種方式適合drawable但它只是不會顯示在android的默認消息視圖。 任何幫助將受到高度贊賞。

也許你可以使用:

String txt = "<img src=\\"" + resourceID + "\\"/>"; 生成HTML標記,之后

Spanned spanned = Html.fromHtml(txt, emojiGetter, null);
editTextObj = setText(spanned,BufferType.SPANNABLE);

emojiGetter是哪里的

private ImageGetter emojiGetter = new ImageGetter() {
    public Drawable getDrawable(String source){
        int id = getResources().getIdentifier(source, "drawable", context.getPackageName());

        Drawable emoji = getResources().getDrawable(id);
        int w = (int)emoji.getIntrinsicWidth() ;
        int h = (int)emoji.getIntrinsicHeight() ;
        emoji.setBounds(0, 0, w, h);
        return emoji;
    }
};

這對我來說可以。 我已經創建了一個CustomEditText組件來簡化這種轉換。

我已經實現了這樣做

 ImageGetter imageGetter = new ImageGetter() 
                {
                    public Drawable getDrawable(String source) {
                        Drawable d = getResources().getDrawable(R.drawable.e041);
                        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
                        return d;
                    }
                };

                Spanned cs = Html.fromHtml("<img src='" + getResources().getDrawable(R.drawable.e041) + "'/>", imageGetter, null);

             getCurrentInputConnection().commitText(cs, 1); 

//但它會覆蓋最后輸入的文本,請在此處查看我的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM