TextView不会刷新getDrawingCache的位图

时间:2015-01-03 00:41:03

标签: android textview android-bitmap

我已经对此进行了相当多的研究,答案并没有帮助100%,我确实找到了一种让它工作的方法,但它很糟糕,我不理解这种行为。

这就是我最终拥有的:

private Bitmap generateBitmapFromTxt() {
        mTxtEmojicon.setDrawingCacheEnabled(true);
        Bitmap bmap = Bitmap.createBitmap(mTxtEmojicon.getDrawingCache());
        mTxtEmojicon.setDrawingCacheEnabled(false);
}

但是位图并不令人耳目一新。我也尝试过:

  • invalidate()
  • buildDrawingCache() destroyDrawingCache()
  • ...

我有一个从TextView扩展的自定义类,生成的位图没有包装单词,除非动态强制计算它的大小。像这样:

private void prepareTxtViewSize() {
        int specWidth = View.MeasureSpec.makeMeasureSpec(mEdt.getMeasuredWidth(), View.MeasureSpec.AT_MOST);
        int specHeight = View.MeasureSpec.makeMeasureSpec(mEdt.getMeasuredHeight(), View.MeasureSpec.AT_MOST);
        mTxt.measure(specWidth, specHeight);

        mTxt.layout(0, 0, mTxt.getMeasuredWidth(), mTxt.getMeasuredHeight());
}

我的自定义TextView类不会覆盖onDraw()

现在,我的解决方案,糟糕的解决方案是在调用prepareTxtViewSize()之前调用generateBitmapFromTxt()两次并且它有效,位图刷新并且我总是得到正确的位图。

但我确信我有些遗漏,我很幸运。那么有人知道我错过了什么和/或为什么两次调用prepareTxtViewSize()实际上会使drawingCache刷新?

0 个答案:

没有答案