java.lang.IllegalArgumentException: android 中的宽度和高度必须 > 0

2024-03-30

我正在尝试从MultiAutoCompleteTextView来自用户并以类似气泡的格式显示它们,但我得到了 :在android中宽度和高度必须> 0

    final MultiAutoCompleteTextView tags = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1);
    String[] TAGS = getResources().getStringArray(R.array.countries);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, TAGS);
    tags.setAdapter(adapter);
    tags.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
    tags.setThreshold(1);
    String contactName = tags.getText().toString();
    final SpannableStringBuilder sb = new SpannableStringBuilder();
    TextView tv = createContactTextView(contactName);
    BitmapDrawable bd = (BitmapDrawable) convertViewToDrawable(tv);
    bd.setBounds(0, 0, bd.getIntrinsicWidth(), bd.getIntrinsicHeight());

    sb.append(contactName + ",");
    sb.setSpan(new ImageSpan(bd), sb.length() - (contactName.length() + 1), sb.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    Toast.makeText(getApplicationContext(),sb,Toast.LENGTH_SHORT).show();

}

    public TextView createContactTextView(String text){
        //creating textview dynamically
        TextView tv = new TextView(this);
        tv.setText(text);
        tv.setTextSize(20);
        tv.setBackgroundResource(R.drawable.oval);
        tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_clear_search_api_holo_light, 0);
        return tv;
    }

    public static Object convertViewToDrawable(View view) {
        int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
        view.measure(spec, spec);
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
        Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        c.translate(-view.getScrollX(), -view.getScrollY());
        view.draw(c);
        view.setDrawingCacheEnabled(true);
        Bitmap cacheBmp = view.getDrawingCache();
        Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true);
        view.destroyDrawingCache();
        return new BitmapDrawable(viewBmp);

    }

当我尝试运行这个时,我收到此错误 宽度和高度必须大于 0。

  E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.androidbegin.train, PID: 11263
                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidbegin.train/com.androidbegin.loginregister.WorkNow}: java.lang.IllegalArgumentException: width and height must be > 0
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
                                                   at android.app.ActivityThread.access$800(ActivityThread.java:155)
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                   at android.os.Looper.loop(Looper.java:135)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5343)
                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
                                                Caused by: java.lang.IllegalArgumentException: width and height must be > 0
                                                   at android.graphics.Bitmap.createBitmap(Bitmap.java:836)
                                                   at android.graphics.Bitmap.createBitmap(Bitmap.java:815)
                                                   at android.graphics.Bitmap.createBitmap(Bitmap.java:782)
                                                   at com.androidbegin.loginregister.WorkNow.convertViewToDrawable(WorkNow.java:57)
                                                   at com.androidbegin.loginregister.WorkNow.onCreate(WorkNow.java:34)
                                                   at android.app.Activity.performCreate(Activity.java:6010)
                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413) 
                                                   at android.app.ActivityThread.access$800(ActivityThread.java:155) 
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317) 
                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 

我认为主要问题是spec正在设置为0

int spec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);

然后,在这里,视图将有0作为宽度和高度...

view.measure(spec, spec);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

因此,在创建位图时,Exception会发生因为view.getMeasuredWidth() and view.getMeasuredHeight()都是0他们不可能

Bitmap b = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

如果可能的话,尝试更改为:

int spec = View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.IllegalArgumentException: android 中的宽度和高度必须 > 0 的相关文章

  • 输入连接-如何删除选定的文本?

    我为 Android 制作了一个自定义键盘 当我按下键盘的退格按钮时 我使用 getCurrentInputConnection deleteSurroundingText 1 0 从输入字段中删除一个字母 但是 当我选择一些文本然后按退格
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • 从关卡堆栈中获取相对比例的数学

    为这个可怕的标题道歉 我花了 10 分钟试图用一句话来解释这一点 但失败了 虽然提示这个问题的应用程序是用Java Android 编写的 但我认为它非常通用并且适用于任何语言 欢迎使用伪代码 或简单的英语 回复 我不确定是否应该标记所有通
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re
  • Java元数据读写

    是否可以以通用方式 对于所有图像类型 在 Java 中读取和写入元数据 我找到了一些示例 但它们总是特定的 例如 JPEG 或 PNG 我需要一些足够通用的东西 而不是到处都有 if else 语句 我不想重写源代码 但这是一个很好的例子
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • android中如何布局支持各种屏幕?

    我正在使用gridview开发图库视图 在小屏幕中我的布局设计修复得很好 但大屏幕没有我的设计 在大屏幕中有一些空格 加载更多图片 按钮参考图2 我该如何解决这个问题 我的清单文件添加了这一行以支持各种屏幕 请给我一些示例代码
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • Android - 主页按钮发出什么意图?

    我想知道设备的主页按钮到底执行什么操作 即 当您单击主页按钮时会发出什么意图 意图类别和操作 回到空白的主屏幕 我想知道在单击我自己的自定义按钮时实现此操作涉及什么 谢谢 PS我知道这不是标准的 但我的设备也不是 如果您想显示主屏幕 可以通
  • 是否可以为 azure blob 存储中的给定目录生成具有写入权限的 SAS(共享访问签名)

    我们的 blob 存储帐户结构 容器名称 simple 在这个容器内我们有 blob aa one zip aa two zip bb ss zip bb dd zip 是否可以生成对aa 目录 有写权限 但对bb 目录 没有访问权限的SA
  • 在 Android Studio 4.0(Canary) 中找不到预览窗口在哪里

    我正在浏览有关在 Android Studio 4 0 Canary 中运行的 Jetpack 的教程 请参阅下面的链接文章 https developer android com jetpack compose tutorial http
  • Phonegap facebook 插件:android 的各种问题

    我正在尝试将 Phonegap 3 1 与 Phonegap facebook plugin 集成 以使我的应用程序能够使用 facebook 登录 https github com phonegap phonegap facebook p
  • 使用 qbs 构建 qt 应用程序

    我想知道在 Linux 上使用 qbs 编译 构建和创建 Android Qt 应用程序的步骤 我拥有所有必要的工具 目前我可以使用 qmake 创建 apk Qbs 目前不支持构建 Qt Android 应用程序 Qbs v1 4 中引入
  • QML MouseArea 将事件传播到按钮

    我正在开发一个应用程序 其菜单类似于 Android 版 Gmail 收件箱应用程序菜单 基本上 当您按下按钮打开菜单时 它就会滑入视图 用户可以将其滑开或按菜单上的按钮 对于滑动我使用了代码SwipeArea from kovrov ht
  • 停止前台运行的服务的正确方法是什么

    我正在尝试停止作为前台服务运行的服务 当前的问题是当我打电话时stopService 通知仍然保留 因此 在我的解决方案中 我添加了一个接收器 我正在将其注册到onCreate 在 的里面onReceive 我调用的方法stopforegr
  • Google Cloud Messaging - 立即收到或长时间延迟收到的消息

    我在大学最后一年的项目中使用谷歌云消息传递 一切正常 但我在使用 GCM 时遇到了一些麻烦 通常 消息要么几乎立即传递 要么有很大的延迟 我读过这篇文章 但我真的认为它不适用于这种情况 GCM 通常会在消息发送后立即传送消息 然而 这并不总
  • 方法签名中带或不带synchronized关键字的方法具有相同的字节码

    对于以下 2 个类 获得相同的 Java 字节码 java版本 java 版本 1 8 0 181 Java TM SE 运行时环境 构建 1 8 0 181 b13 Java HotSpot TM 64 位服务器 VM 内部版本 25 1
  • 如何从spark中的hbase表中获取所有数据

    我在 hbase 中有一个大表 名称为 UserAction 它具有三个列族 歌曲 专辑 歌手 我需要从 歌曲 列族中获取所有数据作为 JavaRDD 对象 我尝试了这段代码 但效率不高 有更好的解决方案来做到这一点吗 static Spa
  • java.io.EOFException:没有更多可用数据 - 预期结束标记 关闭开始标记

    我正在使用 xmpp 开发一个聊天应用程序 根据我们的要求 我们有三台服务器 Apache Tomcat 7 ejabbered 2 1 11 和 mysql 5 5 to run xmppbot on tomcat used below
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co

随机推荐

  • 如何使用 WebApplicationFactory 覆盖 Autofac 容器中的服务

    我正在使用 WebApplicationFactory 编写一些集成测试 我使用 Autofac 作为我的依赖解析器 在我的测试中 我试图覆盖其中一项注册 以便我可以模拟其中一项依赖项 使用aspnetcore默认的ConfigureSer
  • 如何将html5画布保存到服务器

    我将一些图像加载到我的画布上 然后在加载后我想单击一个按钮将该画布图像保存到我的服务器上 我可以看到脚本工作正常 直到它到达 toDataURL 部分并且我的函数停止执行 我究竟做错了什么 这是我的代码
  • Android View 背景意外变化

    我正在构建一个具有大量屏幕的应用程序 大多数屏幕的顶部都有一个带有背景颜色的视图 我经常使用 view setBackgroundColor color 更改颜色 奇怪的事情来了 有时在设置一个视图的颜色后 例如 f14fb7 在应用程序中
  • 将阿拉伯数字转换为英语

    我正在寻找一种将阿拉伯数字字符串 转换为英语的方法 数字字符串 0123456789 Private Sub Button1 Click ByVal sender As System Object ByVal e As System Eve
  • 如何将多个局部变量传递给嵌套部分

    这应该是非常简单且有据可查的 我已经这样做了好几次了 尽管有些事情仍然让我很烦恼 我有一个调用嵌套部分的部分结构 在某个时刻一render调用需要将额外的变量传递给部分 尽管部分的渲染失败并显示 undefined local variab
  • Swing 菜单 Java 7 mac osx

    我一直在 mac os x 上测试我的 Swing 应用程序 它在小程序上运行 当我在浏览器中运行此小程序时 我注意到 JMenus JMenuItems 上的鼠标悬停无法正常工作 这是一个重现该问题的小程序 package com mac
  • 如何在 Sublime Text 中使用控制台

    我正在使用 Sublime Text 2 来编写程序 并希望在其中运行控制台来编译和运行它们 有没有办法在 Sublime Text 2 中嵌入控制台命令行 已经在那里了吗 我同时使用 Windows 和 Linux 我想你可以尝试创建一个
  • 推送事件不会触发推送路径上的工作流程

    我目前正在测试 GitHub Actions 工作流程这个存储库 https github com GuillaumeFalourd poc github actions 我正在尝试使用这个工作流程 https github com Gui
  • 禁止 (#403) - 你不能执行此操作 [Yii2]

    我尝试添加菜单map在后端 我用yii2 advanced 这是我的 控制器 代码 public function actionMap return this gt render map 但是 当我尝试使用此网址访问它时http local
  • opencv中如何根据深度颜色分割连通区域

    I have a picture like which i need to segment the picture into 8 blocks 我尝试过这种阈值方法 img gray cv2 imread input file cv2 IM
  • 如何获得欧米茄(n)

    我有公式 a n n a n 1 1 a 0 0 如果没有主定理 我怎样才能从中得到 Omega Theta 或 O 表示法 或者有人有一个很好的网站来理解解释 马斯特定理甚至不适用 所以不能使用它并不是太大的限制 此处有效的方法是猜测上限
  • 在 R 中:计算精确率/召回率曲线下的面积 (AUPR)?

    假设我有两个矩阵 A代表标签矩阵 B代表A对应的预测概率矩阵 现在我想根据矩阵A和B计算AUPR 精确率 召回率曲线下的面积 对于常见的AUC Area Under Precision Recall Curve ROC Curve R中有很
  • 将多个预制件分配给一个只允许添加一个的脚本

    我有一个脚本 它使用 LeanTween 将对象 预制 放入预制路径上 效果很好 其工作原理是 您可以将一个对象分配给附加有 Moveable 脚本的 路径添加器 MoveController 但是 我需要能够将运行时创建的新预制件添加到
  • 使用 printf 在 c 中 fork() [重复]

    这个问题在这里已经有答案了 有 2 个不同的程序 它们都很小 例如 int main printf print hello fork int main printf print hello n fork 输出 1 是 print hello
  • 根据列删除配置单元中的重复行

    我有一个包含 10 列的 HIVE 表 其中前 9 列将有重复的行 而第 10 列则不会 因为 CREATE DATE 将具有创建日期 例子 如果我今天在表中插入 10 行 它将具有 CREATE DATE 作为今天的日期 如果我明天再次插
  • apache beam.io.BigQuerySource use_standard_sql 作为数据流运行程序运行时不起作用

    我有一个数据流作业 我将首先从 bigquery 查询中读取 在标准 sql 中 它在直接运行模式下完美运行 但是 我尝试在数据流运行程序模式下运行此数据流并遇到此错误 响应 content 显然 use standard sql 参数在数
  • 为什么react-router正确处理正则表达式“path”,但同时抛出错误?

    我有一个组件想要显示在除根路径之外的所有路径上 因此 不要提供所有路径Route组件 我这样写
  • Networkx PageRank - 不同权重的同等排名

    我有一个关于 PageRank 的问题 这可能表明我不太了解它 如果我有一个包含两个节点 A 和 B 的图 并且链接 A gt B 权重 1 0 和 B gt A 权重 2 0 那么 A 不应该因为其入度权重更高而排名更高吗 当我尝试来自n
  • Java中如何检测是否按下了某个键? [复制]

    这个问题在这里已经有答案了 我是 Java 的初学者 我一直在研究如何检测用户是否按下了某个键 例如箭头键 显然有很多方法可以做到这一点 我发现这个方法应该对我有用 public void keyPressed KeyEvent e int
  • java.lang.IllegalArgumentException: android 中的宽度和高度必须 > 0

    我正在尝试从MultiAutoCompleteTextView来自用户并以类似气泡的格式显示它们 但我得到了 在android中宽度和高度必须 gt 0 final MultiAutoCompleteTextView tags MultiA