强制布局(),请求布局()

2024-02-25

我对android文档的阅读发现了方法forceLayout()(用于在下一个布局请求时生成布局显示)和requestLayout()(应该立即发布布局请求),但我无法让它们表现出来正如广告所言。特别是,如果我在 Thread.Sleep 之前设置一组文本,然后在 Thread.Sleep 之后设置一组文本,则它会等待 Sleep 完成,然后再一次设置这两个文本,无论我是否在其间调用 forceLayout() 和 requestLayout() 。请不要回复很多关于我不应该在 UI 线程中调用 Thread.Sleep 的废话。如果我将 Thread.Sleep 包装在 CountDownTimer 中,它就可以很好地工作(只要我的滴答时间足够短,不会干扰睡眠时间,并且计时器的持续时间足够长,以允许睡眠完成。以下是一个例子:

    int i=0;
TextView tv2;
TextView tv1;
LinearLayout ll;
Button bt;
@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ll=new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);
    tv1=new TextView(this);
    tv2=new TextView(this);
    bt=new Button(this);
    bt.setText("Press to start");
    ll.addView(bt);
    ll.addView(tv1);
    ll.addView(tv2);
    tv2.setText("");
    setContentView(ll);
    bt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            tv1.setText("starting sleep");
            new CountDownTimer(6000,50){
              public void onTick(long msuf)
                {if(i==1)
                    {
                try{
              Thread.sleep(4000);
              tv2.setText("waking up");
               }
            catch(InterruptedException e){};
            }
                i++;
                 }
               public void onFinish(){}}.start();
              }         
      });

        }

[关于打电话的废话很多sleep()在 UI 线程中]。如果我理解正确的话,你的意思是有类似的东西:

//...inside onTick()
try {
    tv2.setText("almost waking up"); // first setText()
    Thread.sleep(4000);
    tv2.setText("waking up"); // second seText()
}

如果你让主线程休眠,它就会停止处理任何东西:当前方法、线程循环和消息队列。一旦再次唤醒,它将完成执行该方法,并执行第二个setText()覆盖第一个文本,然后让线程循环继续并刷新 UI,仅显示第二个文本。

Not requestLayout() nor forceLayout()实际上可以使UI立即刷新,它们都会schedule线程循环中的布局请求。我不确定,但我认为它们之间的区别在于requestLayout()由已更改其大小/位置的视图调用在其父级中, and forceLayout()被称为ViewGroup需要它的孩子重新布局。

所以【废话多了,打电话sleep()在 UI 线程中]。对于这样的事情打电话postDelayed()如果您不想搞乱多线程,那么在主线程处理程序上可能是最好的解决方案。

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

强制布局(),请求布局() 的相关文章

  • 房间数据库更改未触发观察者

    当房间数据库更改时 我试图更新 RecyclerView 但是 当数据库发生更改时 不会调用 MainActivity 中定义的观察者的 onChanged 方法 如果我让 DAO 返回 LiveData 而不是 List 并在 ViewM
  • 如何在 Android 中更改 Drawable 的颜色?

    我正在开发一个 Android 应用程序 并且我有一个从源图像加载的可绘制对象 在此图像上 我想将所有白色像素转换为不同的颜色 例如蓝色 然后缓存生成的 Drawable 对象 以便稍后使用它 举例来说 假设我有一个 20x20 PNG 文
  • 如何在android中显示对话框之外的图像?

    我试图在对话框片段的顶部显示配置文件图像 一半在图像之外 我在下面附加了示例对话框 就像那样 并尝试了旧 Stackoverflow 解决方案中的所有 FrameLayout 协作 但我无法存档此内容 请给我正确的解决方案 谢谢 Updat
  • Android 中的 Fragment-Fragment 通信

    我在Android编程方面处于初级水平 所以我需要你真诚的帮助 请任何人帮助我 我正在尝试使用片段构建滑动用户界面 所以我真正的疑问是 我有一个Fragment say FragmentA 它有一个TextView and Button在其
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • 为什么反射会减慢Android手机的速度

    我多次读到反射会降低手机性能 这有多真实 例如 在我的例子中 我从 Web 服务获取一些参数 这些参数与我在 Android 应用程序中的类的参数同名 所以我只是使用java字段和反射设置这些参数的值 它似乎并没有降低性能 有人可以向我解释
  • ADB TCPIP 连接问题

    我有两台 Galaxy S3 其中一个已扎根 另一个则未扎根 因此 当我尝试通过本地网络连接它们时 计算机可以看到已root的计算机 但是正常的就卡在tcpip这一步了 所以 我写 adb tcpip 5555 It says restar
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • 从ListView中隐藏行而不占用空间

    我有一个带有关联 ArrayAdapter 的 ListView 它在多个活动中显示其内容 不幸的是 现在有必要 我的 ListView 在其中一项设置中不显示其所有元素 而仅显示 属性 未设置为 true 的元素 我想避免使用两个具有不同
  • 错误类型 3 - 活动类不存在

    我正在尝试运行 webRTC 应用程序 但返回以下错误 启动应用程序 com onlinevoicecallapp com onlinevoicecallapp MainActivity 设备外壳命令 am start n com onli
  • HMS 核心地图套件在我的 Android 应用程序上根本无法工作

    我正在尝试在我的应用程序中使用华为 HMS 地图套件 我对整体地图很陌生 无论是来自谷歌还是华为 我按照文档中的教程以及华为提供的代码实验室中的说明进行操作 并将我的代码在一起 但是当我运行地图活动时 什么也没有出现 我得到的只是一个空白活
  • Android 上的 MIDI:Java 和/或 AIR 库

    一段时间以来 我一直在考虑在 iPad 上 重新 构建一个应用程序 其中我将使用 Objective C 和DSMI http dsmi tobw net 将 MIDI 信号发送到主机 这还不错 我的意思是 除了实际编写应用程序之外 现在我
  • 无法使用 findViewById() 找到视图

    我找不到TextView通过致电findViewById 即使 ID 确实存在 OtherActivity public class OtherActivity extends Activity Override protected voi
  • Android模拟器中的网络访问

    我试图通过我的 Android 应用程序访问互联网 但我既成功又失败 我在构建应用程序时启动模拟器 并且应用程序安装得很好 我可以使用浏览器访问互联网 但是 当我尝试这个小代码片段时 InetAddress inet try inet In
  • Android 中的库可以有自己的意图过滤器吗?

    我想开发一个可以包含在其他 Android 应用程序中的库来拦截某些类型的意图 是否可以 我创建了一个库和一个测试项目 两者都有自己的AndroidManifest xml文件 在库的清单中 我为操作 TEST 定义了一个意图过滤器 但是
  • 如何将样式应用于我拥有的所有 TextView? [复制]

    这个问题在这里已经有答案了 可能的重复 设计所有 TextView 或自定义视图 的样式 而不向每个 TextView 添加样式属性 https stackoverflow com questions 6801890 styling all
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • Android-dispatchTouchEvent 给了我一个 StackOverflowError

    这里我有一个带有 setOnTouchListener 的 ViewFlipper 它工作得很好 然后我膨胀 ReLayNewsItem 然后将其添加到 ViewFlipper 现在我希望 WebView web 监听触摸事件并将它们传递给
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • Android MulticastSocket.joinGroup 不会触发发送 IGMP 消息

    Code MulticastSocket s new MulticastSocket InetAddress addr InetAddress getByName 230 230 230 1 s joinGroup addr 在 Ubunt

随机推荐

  • 在iOS项目中使用OpenSSL cocoa pod

    我正在尝试将 OpenSSL pod 头文件导入到我的 iOS 项目中 但是 Xcode找不到OpenSSL标头 它说 import
  • 未捕获的类型错误:无法以角度读取控制台中 Http 服务中未定义的属性“id”?

    我正在 Angular 中使用 http 服务 我有一个构造函数 import HttpClientModule HttpClient from angular common http import Component OnInit fro
  • 如何以编程方式打开事件日志?

    我使用通常的方法将错误记录到事件日志中 System Diagnostics Trace TraceError lt purpose gt
  • awk 输出中的额外空间

    为什么在下面的示例中 分隔符前后会出现空格 awk F print 1 2 SERVER 2012 02 29 12 15 00 3969 1272 3969 1272 3969 1272 我期望结果如下 没有任何空格 3969 1272
  • Highcharts - 多个 Y 轴堆叠图表

    我正在创建一个带有两个 Y 轴的图表 距离和持续时间 每个 Y 轴将有多个系列 跑步 自行车 游泳等 堆叠在一起 持续时间是堆积面积或面积样条线 距离是堆积柱形图 这是图表的 jsfiddle http jsfiddle net baber
  • 使用不等式表达式进行内连接

    背景 该问题不是必需的 但阅读可能有用 具有重复键的 data table 上的滚动联接 https stackoverflow com q 32007115 4002530 连接多个条件时的奇怪行为 https stackoverflow
  • PDF - 删除白边

    我想知道如何从 PDF 文件中删除白边距 就像 Adob e Acrobat X Pro 一样 据我所知 它并不适用于每个 PDF 文件 我猜想做到这一点的方法是获取文本边距 然后裁剪掉该边距 PyPdf 是首选 iText 根据以下代码查
  • 为嵌入式系统编写常量参数的最佳实践

    这是一个案例C 中的 static const 与 define https stackoverflow com questions 1674032 static const vs define in c对于嵌入式系统 在具有 传递 代码和
  • 如何在 rake 任务中渲染 Rabl 视图?

    我正在尝试在 Rails 3 2 rake 任务中将 Rabl 视图渲染为字符串 我将其渲染为字符串 以便通过 Pusher 从后台任务发送一些 JSON 我已经从 rake 任务答案中查看了各种 render to string 但它们似
  • Python 使用 Pandas 读取 Google 电子表格

    我在 Google 表格中有文件 我想将其读入 Pandas Dataframe 但给了我一个错误 我不知道它是什么 这是代码 import pandas as pd sheet id 1HUbEhsYnLxJP1IisFcSKtHTYlF
  • Chrome 不会在身份验证处理后重定向回 URL

    至少几年来 我一直在我的 MVC 解决方案中使用与此类似的代码 Authorize public class HomeController Controller HttpGet public ActionResult Index 然后在我的
  • 从列表中形成随机对(有点......)

    跳到最后一次编辑 我有一个清单Person对象 我需要将它们随机配对randomize pairs函数 每个Person对象有一个属性target他们与谁配对 我的限制是没有人可以与自己配对 废话 并且他们不应该与同一个人配对两次 我通过制
  • RSS 和 ATOM 如何通知客户端有关更新的信息?长轮询还是轮询还是其他什么?

    我读到 RSS 和 ATOM 是基于 HTTP 的 使用 XML 格式 那么 如果 HTTP 不支持连接 RSS 或 Atom 阅读器如何获知内容更新呢 他们需要定期轮询服务器吗 我有兴趣在实时网络应用程序中使用它 但我听说 轮询无法扩展
  • 为什么这个 get_index 实现在 VS2017 上失败?

    巴里给了我们这华丽的get index对于变体 https stackoverflow com a 52303687 560648 template
  • 远程编程

    我在 Windows 机器上进行开发工作 但在远程 Linux 机器上进行编译 我目前所做的是在 Windows 上启动 X 服务器 通过 ssh 进入 Linux 机器 然后进行远程开发 我想做的是在 Windows 计算机上编辑源代码
  • 反应输入焦点事件以显示其他组件

    我读过一些关于此的教程 他们告诉我应该使用 ref 来做到这一点 但它非常一般 这是我的问题 基本上在Header组件包括NavBar SearchBar and ResultSearch成分 const Header gt return
  • JSON 对象与窗口变量,用于使用 ReactJS 传递服务器端渲染的初始状态

    在使用 Reactjs 的同构应用程序中 您需要将服务器上呈现的相同初始状态传递给客户端 然后客户端将通过事件绑定等 补充 应用程序 我见过两种传递初始状态的方法 为窗口设置全局变量 或者将其作为 JSON 对象传递 两者都可以从应用程序中
  • Drupal 5:自定义内容类型中的 CCK 字段

    我有通过 NodeAPI 挂钩实现自定义内容类型的模块 hook insert hook updateETC 我想将 CCK 字段添加到此内容类型 并通过 hook nodeapi 调用 如创建或更新 填充它 以在视图中显示内容节点 问题是
  • 使用 iOS6 社交框架将视频上传到 Facebook

    我想将视频文件发布到 Facebook 之前我使用过Facebook iOS SDK3 0 它可以工作 然而 对于iOS6 Social Framework 存在问题 block ACAccount facebookAccount ACAc
  • 强制布局(),请求布局()

    我对android文档的阅读发现了方法forceLayout 用于在下一个布局请求时生成布局显示 和requestLayout 应该立即发布布局请求 但我无法让它们表现出来正如广告所言 特别是 如果我在 Thread Sleep 之前设置一