我正在尝试将textview转换为Bitmap 这是我的Xml代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@string/Rlayout"
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=".ProductListAcivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_above="@+id/textView2"
android:layout_toLeftOf="@+id/bntLinLay"
android:layout_toRightOf="@+id/scrollView1"
android:gravity="center_horizontal"
android:scrollbars="vertical"
android:text="****MIMOSA**** \n Articles :\n"
android:typeface="monospace" />
</RelativeLayout>
然后:
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setMovementMethod(new ScrollingMovementMethod());
tv.setDrawingCacheEnabled(true);
tv.buildDrawingCache();
Bitmap testB = Bitmap.createBitmap(tv.getDrawingCache());
但是位图大小是TextView的初始大小,只占用了Textview的显示部分,所以我尝试使用可扩展的linearLayout这个代码,它可以工作! 我无法找到解决方案。 请提出任何建议!
答案 0 :(得分:0)
我找到了适合你的解决方案。首先,我将从TextView获取文本,计算线条,然后在位图上绘制它。它可能会起作用,但我尝试了其他的东西并且效果很好。
要启用可滚动的TextView,人们通常会执行您所做的操作,设置scrollbars:"vertical"
并设置ScrollingMovementMethod()
。
作为替代方案,您只需将文本视图包装在ScrollView中即可。
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" >
<TextView
android:id="@+id/textView"
android:text="@string/hello_world"
android:gravity="center_horizontal"
android:textSize="20sp"
android:typeface="monospace"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ScrollView>
然后此代码将起作用
tv.setDrawingCacheEnabled(true);
Bitmap testB = Bitmap.createBitmap(tv.getDrawingCache());
删除行:
tv.setMovementMethod(new ScrollingMovementMethod());
tv.buildDrawingCache();
现在,让我解释一下为什么会这样。当您请求绘图缓存时,您将根据视图边界以及在这些边界内绘制的所有内容获取缓存。因为你的TextView匹配RelativeLayout和&#34; draw&#34;不可见的文本超出范围,您无法获取位图中的所有文本。
另一方面,当您将其包装在ScrollView中时,TextView大小与文本匹配,因此缓存范围覆盖整个文本并且对您有用。