使用 Android Studio,为什么包含在 LinearLayout 小部件中的 TextView 显示会被截断?
Using Android Studio, why is TextView display contained into LinearLayout widget truncated?
我想将 'display' 的以下部分作为图像提取到 PNG 文件中。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Layout">
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/Image_view"
/>
<TextView
android:id="@+id/text_view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</FrameLayout>
</LinearLayout>
为此,我使用以下代码
list.add("Raghul s");
list.add("Name 2");
list.add("Name 3");
for(int i=0;i<list.size();i++)
{
LinearLayout view = (LinearLayout) findViewById(R.id.Layout);
txt = (TextView) findViewById(R.id.Text_View1);
txt.setText(list.get(i));
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
bs = new ByteArrayOutputStream();
bs.compress(Bitmap.CompressFormat.PNG, 40, bitmap);
try {
file = new File("Image.png");
file.createNewFile();
ws = new FileOutputStream(file);
ws.write(bs.toByteArray());
ws.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
当我执行这段代码时,我得到了一个 PGN 图像,其中 Raghul 的单词被部分截断,如下图所示
对于姓名 2 和姓名 3:
发生了什么事?
为什么 "Raghul s" 和 "name 2" 被截断了?
如何解决这个问题?
我认为您的问题与您的 TextView 宽度太短而无法完整显示您的名字有关。
有 3 种可能性可以检查我看到的原因是否正确。
一个。您删除 ImageView
小部件并将 TextView 中的 wrap_content
替换为 match_parent
乙。您在 TextView 小部件
中添加以下 属性
android:text="xxxxxxxxxx"
C。在使用以下代码分配 TextView 后,您使用 view.invalidate()
刷新 LinearLayout:
txt.setText(list.get(i));
view.invalidate();
我认为(未经测试),最后一条命令将解决您的问题。
我已经添加了这个选项
D.您可以为 LinearLayout 中存在的所有小部件着色,看看会发生什么。这样做,我们可以看到所有小部件的宽度,也许我们可以更好地理解您的问题。
我想将 'display' 的以下部分作为图像提取到 PNG 文件中。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Layout">
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/Image_view"
/>
<TextView
android:id="@+id/text_view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</FrameLayout>
</LinearLayout>
为此,我使用以下代码
list.add("Raghul s");
list.add("Name 2");
list.add("Name 3");
for(int i=0;i<list.size();i++)
{
LinearLayout view = (LinearLayout) findViewById(R.id.Layout);
txt = (TextView) findViewById(R.id.Text_View1);
txt.setText(list.get(i));
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
bs = new ByteArrayOutputStream();
bs.compress(Bitmap.CompressFormat.PNG, 40, bitmap);
try {
file = new File("Image.png");
file.createNewFile();
ws = new FileOutputStream(file);
ws.write(bs.toByteArray());
ws.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
当我执行这段代码时,我得到了一个 PGN 图像,其中 Raghul 的单词被部分截断,如下图所示
发生了什么事?
为什么 "Raghul s" 和 "name 2" 被截断了?
如何解决这个问题?
我认为您的问题与您的 TextView 宽度太短而无法完整显示您的名字有关。
有 3 种可能性可以检查我看到的原因是否正确。
一个。您删除 ImageView
小部件并将 TextView 中的 wrap_content
替换为 match_parent
乙。您在 TextView 小部件
中添加以下 属性android:text="xxxxxxxxxx"
C。在使用以下代码分配 TextView 后,您使用 view.invalidate()
刷新 LinearLayout:
txt.setText(list.get(i));
view.invalidate();
我认为(未经测试),最后一条命令将解决您的问题。
我已经添加了这个选项
D.您可以为 LinearLayout 中存在的所有小部件着色,看看会发生什么。这样做,我们可以看到所有小部件的宽度,也许我们可以更好地理解您的问题。