Android TextView.setText()+ getDrawingCache(),文本在Bitmap中不可见

时间:2017-01-23 15:30:26

标签: android android-layout bitmap android-view

我对getDrawingCache()的{​​{1}}和setText()有疑问。我在TextView之后看不到位图中的文字并使用了setText()

getDrawingCache()

代码是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mainLinearLayout"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
     >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/transparencyGray"
        app:contentInsetEnd="0dp"
        app:contentInsetStart="0dp" >
    </android.support.v7.widget.Toolbar>


    <TextView
         android:id="@+id/idOfTextView"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textColor="@color/white"
         android:shadowColor="@color/black"
         android:shadowDx="0"
         android:shadowDy="0"
         android:shadowRadius="5"
         android:layout_gravity="center"
         android:textSize="@dimen/textSizeLarge"
    />

</LinearLayout>

位图具有正确的分辨率,正确的mainLinearLayout背景(以编程方式设置,不在此示例中),但我看不到文字:&#34;一些特殊的测试字符串&#34;来自Bitmap中的idOfTextView.setText( "Some special test string" ); // create bitmap screen capture View v1 = getWindow().getDecorView().getRootView(); //v1.invalidate(); v1.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache()); v1.setDrawingCacheEnabled(false);

有趣的是:当我向idOfTextView添加idOfTextView.setText( "Some special test string" )时,部分文本(&#34; Some&#34;)会显示在Bitmap中。

当我在代码中发表评论android:text="Test string"并将setText()添加到idOfTextView时,一切正常。

我尝试过:编辑布局,无效,setVisibility,在Google上搜索,但我不知道,现在接下来会做什么。

谢谢。

1 个答案:

答案 0 :(得分:-1)

here的启发 解决方案:

idOfTextView.setText( "Some special test string" );
final View v1 = getWindow().getDecorView().getRootView();
final ViewTreeObserver vto = affirmation.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);
    }
});