你没有文本视图添加到屏幕上。一旦你添加它,视图的高度和宽度将被计算用于渲染,然后只有视图将被绘制,你可以从中获取位图。
做三件事情,
- TextView的添加到图像视图的父。
- 做一个postdelayed来获取允许android系统呈现视图的位图。
- 获取放置在图像视图中的postDelayed runnable中的位图。
如果您不希望文本视图不显示,请使用textView.setVisibility(View.INVISIBLE);取出位图之后。
这是我的代码为您的问题。
activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<ImageView
android:id="@+id/img_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
的onCreate(MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv;
tv = new TextView(this);
tv.setText("sadasdsadssad");
tv.setVisibility(View.INVISIBLE);
ViewGroup rl = (ViewGroup) findViewById(R.id.root);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
tv.setLayoutParams(lp);
rl.addView(tv);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
tv.setDrawingCacheEnabled(true);
tv.buildDrawingCache();
Bitmap bm = tv.getDrawingCache();
ImageView im = (ImageView) findViewById(R.id.img_view);
im.setImageBitmap(bm);
}
},100);
}
的)我是调试和我发现Mitmap为空。 –