为什么 android ImageSpan 会显示我的图片两次(当 setBounds 超过特定的魔法宽度时)?

2024-02-18

这是我将 ImageSpan 放入 EditText 中的代码。

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    EditText et = (EditText) getActivity().findViewById(R.id.html_text);

    SpannableString ss = new SpannableString("ABC");
    Drawable d = getResources().getDrawable(R.drawable.ic_launcher);

    d.setBounds(0,0,2256,760);

    ImageSpan span = new ImageSpan(d, "haha", ImageSpan.ALIGN_BASELINE);
    ss.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    et.setText(ss);
}

在玩的过程中,我发现了一些奇怪的事情。我的 AVD 是 2560x1600。当 setBounds 调用宽度小于或等于 2256 时,图片显示正确。但宽度大于2256时,图片会显示两次!不同图片的魔法值是相同的。我还尝试了不同大小的 AVD。对于 720x1080,魔术宽度是 608。这个魔术宽度是多少?如何确保我的图片不超过这个神奇宽度?

顺便说一句,这是 EditText 的布局:

<EditText
    android:id="@+id/html_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

这对我有用

int width;
int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_matn_activity3);  
Display display = getWindowManager().getDefaultDisplay(); 
     width = display.getWidth();  // deprecated
     height = display.getHeight();  // deprecated
 SpannableString ss = new SpannableString("ABC");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
double ratio= (double)((double)(d.getIntrinsicWidth())/(double)(d.getIntrinsicHeight()));
//this shows the original ratio of image

                if(d.getIntrinsicWidth()<width){
                d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
                Log.v("small","small");
                }else{
                    Log.v("big","big");
                    d.setBounds(0, 0,(int)(width*.95),(int)(d.getIntrinsicHeight()/ratio*.95));
//i dont know why but if you put 1 instead of .95 again you will see 2 images
//this is exactly the magic width you have said
                }
}

它可能有一点问题,因为我的项目很大而且不同,我无法输入确切的代码 .但它通常有效

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

为什么 android ImageSpan 会显示我的图片两次(当 setBounds 超过特定的魔法宽度时)? 的相关文章

  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 与其他图标相比,AppCompat ShareActionProvider 图标太大

    我将 ActionBarSherlock 更改为 AppCompat v7 我已经完成了使其工作所需的所有更改 但是共享图标 使用 ShareActionProvider 发生了一些奇怪的情况 与其他图标相比 共享图标太大 我还使用支持库进
  • 强制用户在 Android 中的 EditText 中输入内容

    我的活动中有几个编辑文本 我希望我的用户在提交表单之前正确输入 我该怎么做 我还有旋转器和 RadioGroup 按钮 你可以加验证在提交按钮上单击 private boolean validateFields int yourDesire
  • 如何在 Android 中使用 Assets 中预加载的 SQLite 数据库

    我想用preloaded database在我的应用程序中意味着尝试在安装 apk 时获取数据库 以便可以使用已保存在其中的数据 我复制了 成分 db 文件位于资产文件夹中 并使用以下代码 但这会出现错误 从资源文件复制数据库时出现问题 我
  • Firebase 数据库快速入门处理计数的方式安全吗?

    我想为文章点赞创建一个增量字段 我指的是这个链接 https firebase google com docs database android save data save data as transactions https fireb
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • Renderscript 示例构建错误

    所以我想尝试使用 RenderScript 的示例 并在 Eclipse 中导入了 HelloWorld 但它给了我这样的错误 2011 10 25 13 10 48 HelloWorld home mileoresko workspace
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 应用内结算错误

    我的 UNMANAGED 应用内购买无法正常工作 在它完美运行之前 我可以使用测试帐户成功购买 但它突然不起作用了 因为我记得我对商家帐户所做的只是添加更多 2 4 个测试帐户 添加后 我的应用内购买将不起作用 所以我更新了公钥并上传了一个
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • finish() 完成活动但它仍然在后台

    我有一个关于 android studio 中活动的 finish 方法的问题 我有这个简单的代码 public class MainActivity extends AppCompatActivity Override protected
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • Android:解析 XML 数据的最佳解析器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 其中我第一次要解析来自远程服务器的 xml 文件中的数据 但我无法选择哪个解析器是有效的或最适合解析的 因为我知道主要有

随机推荐

  • TensorFlow/Keras 使用特定类召回作为稀疏分类交叉熵的度量

    更新在底部 我尝试使用 3 个类别中的 2 个类别的召回率作为指标 即 A B C 类中的 B 类和 C 类 其本质是我的模型在类别中高度不平衡 90 是A类 因此当我使用准确度时 每次预测A类时我都会得到 90 的结果 model com
  • 用逗号将一个字符串拆分为几列

    例如 我有下表 Block abcdefgh 12kjkjkj 231wewoxyz 我怎样才能将它转换成 Block1 Block2 Block3 abcdefgh 12kjkjkj 231wewoxyz Note 每个 块 最多有 8
  • 如何配置 jest 使用的 jsdom 实例?

    我遇到过这个问题在玩笑测试用例中需要 systemjs 时抛出无效 URL https github com systemjs systemjs issues 840 最后的评论之一建议 通过在 jsdom 中设置引荐来源网址配置来操纵 j
  • 更改 iPython 笔记本 Markdown 单元格中的字体

    我只是想将 Ipython 1 0 0 笔记本 Markdown 单元中的默认字体更改为其他内容 并尝试使用 Markdown 单元中的样式标签来执行此操作 而不是通过创建 custom css 的路径 我不懂 CSS 而且我的需求也很少
  • XML 架构参考

    我有两个 XML 模式 第一的 A xsd 位于库 jar 文件中 mylib jar 和第二个 B xsd 在我的项目中 我想进口A xsd进入B xsd并通过以下方式验证传入的 XMLJaxb2Marshaller嵌入式验证器 但是我无
  • Firebase populateViewHolder 永远不会被调用

    我的 firebase 控制台中有以下结构 我正在尝试读取值并显示所有用户 但 populateViewHolder 永远不会被调用 users OW5BYennVRXvfzOjfKpup9rZEYv2 email email protec
  • EF Core:在同一表中的项目之间创建链接

    假设我有一个公司列表 Company CompanyID CompanyA 1 CompanyB 2 CompanyC 3 CompanyD 4 假设我们想展示这一点CompanyA是的竞争对手CompanyB and CompanyC但不
  • 将HIVE查询结果中的空值或NULL值替换为特定值

    当查询未返回所选列之一的任何结果时 我尝试显示默认值 其他 我将向您展示这个例子 此查询返回空值os agent SO 第一行 select country os agent SO count from clicks data where
  • 单条语句同步?

    如果我有一个只有一个这样的语句的 getter 方法 public class NumberClass int number public int getNumber return number 并且多个线程访问此方法 我是否必须同步此方法
  • Java 中的可变字符串

    几乎每个人都知道 Java 中的字符串是不可变的 最近我发现一些事情可能表明这并不总是正确的 让我们尝试一下这段代码 System out println BEFORE MODIFICATIONS String beforeTest new
  • 如何跳过选择屏幕上的必填字段?

    我希望当我单击 Iptal 按钮时它跳过必填字段 但我不想在没有 强制 的情况下控制强制字段 我想在文本框中看到复选标记 例如屏幕截图 通常 当没有必填字段时 Iptal 按钮会调用不同的屏幕 注意 屏幕是标准选择屏幕 我解决这个问题的方法
  • EntityManager bean 的 @Autowired 与 @PersistenceContext

    有什么区别 Autowired private EntityManager em versus PersistenceContext private EntityManager em 这两个选项都适用于我的应用程序 但是我可以使用 Auto
  • 带有通配符领域的 Google 联合登录(混合 OpenID+OAuth)

    我正在尝试实施 Google 的OpenID OAuth https developers google com accounts docs OpenID oauth协议 当 openid realm 包含通配符时它不起作用 openid
  • 带有石英的自定义 UIBarButtonItem

    如何用石英绘制一个与 UIBarButtonItem 风格完全相同的按钮 按钮应该能够显示不同的颜色 我下载了Three20项目 但是这个项目非常复杂 你需要很多时间才能忽略整个框架 我只想绘制一个自定义 UIBarButtonItem 感
  • 为 azure blob 存储终结点配置自定义域名

    我正在关注有关如何为 Blob 存储端点配置自定义域的说明 https learn microsoft com en us azure storage blobs storage custom domain name register a
  • 电子邮件验证 MX 查找

    我被要求在网络应用程序上实现一些电子邮件地址验证 我相信我们都已经经历过一千次了 但是 这一次我被要求在域上进行 MX 查找 看看是否它接受电子邮件 有谁知道这样做有任何潜在的问题吗 mx 查找是确定域是否接受电子邮件的可靠方法吗 是否存在
  • 如何在我的本地仓库 Maven 中下载并安装 jar

    我正在尝试在 tomcat 下下载一个用于内部存储库的 jar 然后将其安装到我的本地 Maven 存储库 jar 文件可以在下面找到path http 10 11 250 14 strepo ext JSErrorCollector 0
  • 如何正确使用CSS媒体查询进行响应式设计

    我有媒体查询方面的问题 我想要我的主线div宽度为 960 像素 但如果屏幕小于 960 像素 我希望它是任何当前宽度的 80 我只从 960px 中得到 80 而不是从更小的所有东西中得到 80 例如 800px 的 80 700px 的
  • Opencv - 灰度模式与灰度颜色转换

    我正在 opencv 2 4 11 python 2 7 中工作 并正在处理灰色图像 在灰度模式下加载图像并将图像从 BGR 转换为灰度时 我发现了异常行为 以下是我的实验代码 import cv2 path some path to co
  • 为什么 android ImageSpan 会显示我的图片两次(当 setBounds 超过特定的魔法宽度时)?

    这是我将 ImageSpan 放入 EditText 中的代码 public void onActivityCreated Bundle savedInstanceState super onActivityCreated savedIns