Android setX() 和 setY() 行为怪异

2023-11-26

我正在尝试动态创建然后在 Android 活动中移动图像。但是,setX() 和 setY() 方法似乎无法正常工作。它在首次创建和放置图像时正确设置图像的位置,但任何更新图像的尝试都会导致图像被放置在错误的位置。例如,图像在以下代码上移动:

ImageView image;
RelativeLayout layout = (RelativeLayout)findViewById(R.id.activity_this);

if(action == MotionEvent.ACTION_DOWN){

    image = new ImageView(MyClass.this);                            
    layout.addView(image, width, height);   
    image.setX(206);
    image.setY(206);
}
else if(action == MotionEvent.ACTION_MOVE){

    if(image != null){
        image.setX(206);
        image.setY(206);
    }
}

在 ACTION_MOVE 上,即使 x 和 y 位置值保持不变,图像也会移动。图像的父级保持不变。大小保持不变。如果我得到 x 和 y 值,它仍然会显示 206,但它不再放置在活动的 (206, 206) 处。我不知道为什么会发生这种情况。除了物理位置发生变化之外,我找不到任何迹象表明图像已被更改。


真的,这不应该发生。或者,尝试设置另一个变量并为其设置 x 和 y,或者获取 x 和 y 并为同一位置的每个变量添加 0。

如中所述Android - 在 api 8 中使用 view.setX() 和 setY,如果您搜索过,还有另一种解决方案,即使在 api 8 之前也可以使用。LayoutParams像这样工作 -

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //WRAP_CONTENT param can be FILL_PARENT
params.leftMargin = 206; //XCOORD
params.topMargin = 206; //YCOORD
childView.setLayoutParams(params);

那里有更多信息。我希望这有帮助

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

Android setX() 和 setY() 行为怪异 的相关文章

  • ListView 和 CursorAdapter 对于大量数据的性能问题

    我在 sqlite 表中有大约 4k 行 表有 7 列 我用自己的 CursorAdapter 创建了工作 ListView 查询是这样的SELECT FROM table ORDER BY column DESC 表有第一列 id INT
  • 使用 setMessage() 在 AlertDialog 中显示多行文本和变量

    我需要在警报对话框中显示多行文本 如果我使用多个 setMessage 方法 则仅显示最后一个 setMessage 如下所示 final AlertDialog alertDialog new AlertDialog Builder th
  • 更新房间迁移的行

    是否可以编写迁移来更新某个表的所有先前数据 我正在为我的房间数据开发加密 如果我可以在迁移后加密所有行 那就太好了 那么 在定义迁移时 您可以访问支持SQLite数据库 https developer android com referen
  • 自定义 ListView 和 onclick

    这是我的代码 一切 我按照你说的做了 但我仍然无法点击任何内容 我的意思是我可以点击但没有任何反应 package fixus core import java util ArrayList import java util Iterato
  • 如何在同一个列表视图中同时实现ontouch和onfling?

    我有一个listview并实现了onclick和onfling 问题是当我进行fling 从左向右滑动 时 listview的onclick事件也被执行 如何克服这个问题 如何区分列表视图中的触摸 点击 和滑动 滑动 listClickLi
  • Kotlin 协程 - 优雅地处理挂起函数中的错误

    尝试使用从异步方法调用的挂起函数来实现对错误的优雅处理 如何捕获挂起方法引发的错误 suspend fun findById id Long User throw Exception my exception intentionally t
  • LibGDX 闪烁

    我已经使用 LibGDX UI 设置来启动一个项目 我在实现 ApplicationListener 中唯一拥有的是 public void create setScreen new LoadingScreen this 这应该会触发 Lo
  • 如何将 Material 按钮与其他 UI 元素对齐

    我无法将默认材质按钮与 UI 的其他元素对齐 事实上 我已经查看了 Android 源代码 按钮的背景包含插图 以便能够绘制阴影并处理单击时按钮的高度
  • Picasso onBitmapLoaded 从未调用过

    我遇到了同样的问题 我想使用毕加索生成的可绘制对象进行图像缓存 但我无法得到相同的结果 这是我用来访问位图可绘制对象的代码 Target targetBitmap new Target Override public void onPrep
  • 以编程方式更改小部件布局

    假设我有两个小部件布局 Layout1 和 Layout2 小部件的默认值是 Layout1 但我允许用户选择 他们希望小部件采用哪种布局 所以如果用户更改为 Layout2 如何以编程方式将布局更改为 Layout2 小部件没有像活动那样
  • AppWidget 中的进度条

    我在应用程序小部件中使用 ProgressBar 时遇到了一个有趣的情况 文档 http developer android com guide topics appwidgets index html http developer and
  • 如何将点击侦听器添加到 Android/Java Textview 中的字符串中?

    我想要完成的是大多数 Twitter 应用程序中的标准操作 在文本视图中 文本字符串中的单词前面可能有 提及或 主题标签 并且它们实际上能够添加点击侦听器这个词启动了另一项活动 有谁知道这是如何实现的 下面我附上了一张示例照片 显示了我想要
  • 是否可以自定义首选项标题布局?

    我发现了类似的问题 但找不到最新的具体答案 我在用着
  • Android AsyncTask 第二次调用时未执行

    我有一个扩展 AsyncTask 的类 public class SendJSONArray2Server extends AsyncTask
  • Web 服务凭证 - OpenID/Android AccountManager?

    我正在构建一个网络服务 并想使用用户的谷歌帐户凭据 该服务在 GAE 上运行 并将有一个 Web 客户端和一个 Android 本机客户端 这是我第一次尝试类似的事情 我一直在阅读有关 OpenID 和 Android AccountMan
  • MediaPlayer() 音频口吃(android)

    我正在我的 Android 应用程序中使用 MediaPlayer 函数从远程服务器传输实时音频流 但音频断断续续且断断续续 问题不在于我的互联网 因为当我在计算机上播放时 提要播放得很好 可能是什么问题 注意 直播正在进行中 这是我正在使
  • 同一活动中的多个日期选择器

    我对 Android 平台完全陌生 在学习开发过程的同时一直在构建应用程序 目前 我正在开展一项活动 需要部署 2 个日期选择器 一个是 开始日期 另一个是 结束日期 我一直在关注 Android 开发者页面上的 DatePicker 教程
  • Android 中的自定义相机应用程序问题 - 旋转 270、拉伸捕获视图且未获取所有功能

    我从代码中得到了帮助https github com josnidhin Android Camera Example https github com josnidhin Android Camera Example 但面临一些问题 例如
  • 从 SD 卡读取 pdf 文件

    我想阅读存储在 SD 卡中的 pdf 文件 我尝试使用此代码片段 File file new File Environment getExternalStorageDirectory vvveksperten ypc pdf Package
  • Firebase 附加权限。是否要求用户接受

    我目前正在致力于将 Firebase Analytics 集成到我的 Android 应用程序中 我遇到的问题是 Firebase 添加了一些新权限 这些权限是 permission WAKE LOCK com google android

随机推荐

  • 一个 Java 类中最多可以使用多少个 lambda?

    这是一个纯粹概念性的问题 Java 8 中的 Lambda 被转换为使用以下方式调用的方法invokedynamic 如果 JVM 对一个类可以拥有的最大方法数有限制 这是否意味着一个类中使用的 lambda 最大数量也受到 JVM 的严格
  • 使用 redux 时,应该如何在 React 组件中处理取消订阅?

    在我的组件中 我有以下内容 componentWillMount function this unsubscribe store subscribe function this setState message store getState
  • 如何将Scala Squeryl ORB与play 2.0框架集成?

    我正在尝试将 Squeryl ORB 与 play 2 0 框架一起使用 但是在调用时DB getConnection 在初始化期间我得到 BadPath 路径参数 无效路径 找不到defaultdb的数据源 路径表达式中不允许使用令牌 如
  • 从 device_vector 中删除元素

    推力 device vector 值 推力 device vector 键 初始化后 keys包含一些等于 1的元素 我想删除键中和值相同位置的元素 但不知道并行如何处理 可能有很多方法可以做到这一点 一种可能的方式 使用模板版本thrus
  • Android WebSocket 服务进行多个连接

    我创建了一个 Web 套接字服务 但它不断建立多个连接 我只希望应用程序建立一个连接 除非网络连接断开然后建立另一个连接 但现在 如果我按下手机上的主页按钮 它就会建立一个连接 然后返回应用程序 它将建立另一个连接 谢谢你们的帮助 在创建
  • GNU Parallel:将文件拆分为子文件

    Goal 使用 GNU Parallel 将大 gz 文件拆分为子文件 由于服务器有 16 个 CPU 因此创建 16 个子级 每个子项最多应包含 N 行 这里 N 104 214 420 行 子项应采用 gz 格式 输入文件 名称 fil
  • 获取字符串“600sp”整数部分的最佳方法?

    我有一个字符串 比如 600sp 我希望从中获取整数部分 600 If I do Integer valueOf 600sp 由于字符串中遇到非数字值 s 我收到异常 获取整数部分最快最干净的方法是什么 Thanks 如果您的字符串格式始终
  • 如何在带有参数的 Swift 块中正确处理 Weak Self

    In my TextViewTableViewCell 我有一个变量来跟踪块和一个配置方法 其中块被传入并分配 这是我的TextViewTableViewCell class TextViewTableViewCell swift impo
  • 启用急切执行时不支持 tf.gradients。使用 tf.GradientTape 代替

    from tensorflow keras applications import VGG16 from tensorflow keras import backend as K model VGG16 weights imagenet i
  • rake db:migrate 产生“rake 中止!找不到表”错误

    我是 Rails 新手 正在为我的雇主构建一个简单的项目跟踪应用程序 我一直在我的 Mac 上开发该应用程序并将其推送到 github 我刚刚设法将我的 github 存储库克隆到公司防火墙后面的 Windows 盒子上 希望让同事试用该应
  • 如何在运行时创建任意数组类型的实例?

    我试图在编译时反序列化未知类型的数组 在运行时我发现了该类型 但我不知道如何创建实例 就像是 Object o Activator CreateInstance type 这不起作用 因为没有无参数构造函数 Array 似乎没有任何构造函数
  • Sys.path.insert 插入模块路径,但导入不起作用

    我想在项目中导入一个模块 但由于导入错误给我带来了很多麻烦 所以我决定写一个小测试来看看问题出在哪里 我将一个文件夹添加到我的系统路径并尝试导入它 我得到一个Import Error no module found named xyz 像这
  • 比较器工作方式的效率

    我正在尝试使用比较器来帮助对对象列表进行排序 我有一个关于比较器到底如何工作以及它在以下示例中具体执行什么操作的问题 private static Comparator
  • 将 html5 canvas 图像保存在本地硬盘上

    我使用kineticjs库在html 5画布上创建了形状 现在我想将画布保存为本地系统硬盘上的图像 请告诉我如何使用 KineticJS 库来实现它 选择画布后 我猜使用类似 document getElementById 的东西 您应该能
  • 如何确定您的 WinForms 应用程序是否有可用的 Internet 连接?

    确定 WinForms 应用程序是否有可用的 Internet 连接的最佳方法是什么 当然以编程方式 如果用户未连接到互联网 我想禁用 隐藏某些功能 以下内容将确定您是否已连接到网络 但这并不一定意味着您已连接到 Internet Netw
  • ContainsKey 线程安全

    在下面的代码中 public class StringCache private readonly object lockobj new object private readonly Dictionary
  • 单击 winform 应用程序中的按钮后如何将焦点返回到上次使用的控件?

    我正在开发一个 Windows 窗体应用程序 C 用户在窗体中输入数据 在编辑表单中的数据时 用户可以随时单击表单上的按钮之一来执行某些操作 默认情况下 焦点转到单击的按钮 因此用户必须重新单击他们想要编辑的控件才能继续修改表单上的数据 我
  • 如何填充列表间隔之间的元素

    我有一个这样的列表 list 1 np NaN np NaN 1 np NaN np NaN np NaN 0 np NaN 1 np NaN 0 1 np NaN 0 np NaN 1 np NaN 所以有一些间隔以1并结束于0 我怎样才
  • C# 属性在 main 上

    有人问我如何打印 line no 1 line no 2 line no 3 无需更改读取的主要方法 static void Main string args Console WriteLine line no 2 现在的一种方法是为控制台
  • Android setX() 和 setY() 行为怪异

    我正在尝试动态创建然后在 Android 活动中移动图像 但是 setX 和 setY 方法似乎无法正常工作 它在首次创建和放置图像时正确设置图像的位置 但任何更新图像的尝试都会导致图像被放置在错误的位置 例如 图像在以下代码上移动 Ima