通过获取每个子项的位置动态地将子项添加到 LinearLayout

2023-11-25

我在获取孩子的位置时遇到问题线性布局。首先,我动态添加一些按钮,然后尝试返回每个子项的索引并将其显示到TextView。我在这里分享代码:

java源代码:

private String[] categories;

private LinearLayout ll;
private TextView tv;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    categories = getResources().getStringArray(R.array.categories);

    tv = (TextView) findViewById(R.id.text);
    ll = (LinearLayout) findViewById(R.id.hsvLinearLayout);

    for(int i = 0; i < categories.length; i++) {
        Button btn = new Button(this);
        btn.setText(categories[i]);
        btn.setOnClickListener(buttonClick);
        ll.addView(btn);
    }
}

OnClickListener buttonClick = new OnClickListener() {
    public void onClick(View v) {
        tv.setText(ll.indexOfChild(v));
    }
};

XML结构:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<HorizontalScrollView
    android:id="@+id/Footer"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scrollbars="none"
    android:fadingEdge="none"
    >

    <LinearLayout
        android:id="@+id/hsvLinearLayout"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >

    </LinearLayout>

</HorizontalScrollView>

<TextView
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

资源:

<string name="today">Today</string>
<string name="life">Life</string>
<string name="corner">Corner</string>
<string name="banks">Banks</string>
<string name="it">IT</string>
<string name="fun">Fun</string>

<array name="categories">
    <item>@string/today</item>
    <item>@string/life</item>
    <item>@string/corner</item>
    <item>@string/banks</item>
    <item>@string/it</item>
    <item>@string/fun</item>
</array>

动态添加很好,但是我设置的方式单击监听器产生一些错误。任何帮助都会有用的!这样做的目的是如果我想添加一个或多个按钮到水平滚动视图不需要编辑很多文件,只需转到刺.xml并创建一个新项目到类别数组!

这是什么LogCat生产:

07-12 22:37:17.680: INFO/System.out(331): waiting for debugger to settle...
07-12 22:37:17.900: INFO/System.out(331): debugger has settled (1441)
07-12 22:37:20.870: INFO/ActivityManager(61): Displayed activity com.test/.TestDynam: 10203 ms (total 10203 ms)
07-12 22:37:25.552: WARN/ResourceType(331): No package identifier when getting value for resource number 0x00000000
07-12 22:37:26.871: DEBUG/dalvikvm(132): GC freed 190 objects / 8976 bytes in 901ms

澄清一下 - 应用程序启动时没有任何错误,但是当我单击按钮时,它会从上面的日志中生成这一行:

07-12 22:37:25.552: WARN/ResourceType(331): No package identifier when getting value for resource number 0x00000000

这是来自debugger:

TestDynam [Android Application] 
    DalvikVM[localhost:8611]    
        Thread [<3> main] (Suspended (exception Resources$NotFoundException))   
            ViewRoot.handleMessage(Message) line: 1704  
            ViewRoot(Handler).dispatchMessage(Message) line: 99 
            Looper.loop() line: 123 
            ActivityThread.main(String[]) line: 4203    
            Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
            Method.invoke(Object, Object...) line: 521  
            ZygoteInit$MethodAndArgsCaller.run() line: 791  
            ZygoteInit.main(String[]) line: 549 
            NativeStart.main(String[]) line: not available [native method]  
        Thread [<13> Binder Thread #2] (Running)    
        Thread [<11> Binder Thread #1] (Running)

你的问题是资源...... 您使用 setText(int) 方法(该索引是 int...)来查找资源而不是字符串,这不是您可以抛出任何类型并获取字符串的 StringBuilder。 你需要更换

tv.setText(ll.indexOfChild(v));

with

tv.setText(Integer.toString(ll.indexOfChild(v)));

如果你想要一点点效率:

public class TestActivity extends Activity {

    private String[] categories;

    private LinearLayout ll;
    private TextView tv;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        categories = getResources().getStringArray(R.array.categories);

        tv = (TextView) findViewById(R.id.text);
        ll = (LinearLayout) findViewById(R.id.hsvLinearLayout);

        for(int i = 0; i < categories.length; i++) {
            Button btn = new Button(this);
            btn.setText(categories[i]);
            btn.setOnClickListener(buttonClick);
            ll.addView(btn);
            int idx = ll.indexOfChild(btn);
            btn.setTag(Integer.toString(idx));
        }
    }

    OnClickListener buttonClick = new OnClickListener() {
        public void onClick(View v) {
            String idxStr = (String)v.getTag();
            tv.setText(idxStr);
        }
    };

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

通过获取每个子项的位置动态地将子项添加到 LinearLayout 的相关文章

  • PhoneGap/Cordova 应用程序通知

    我是 PhoneGap Cordova 的新手 我希望向我的应用程序添加一些通知 推送通知 因此当应用程序上发布新文章时 它会提醒用户 本地通知 在设定的时间间隔 日期和时间 我可以提示用户我的应用程序上的最新文章 我进行了大量搜索 但找不
  • 房间数据库更改未触发观察者

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

    我的问题有两个 是否建议在 Android 的主线程上进行 IO 操作 或者它是否有可能导致我的应用程序崩溃 如果在主线程上执行 IO 操作不理想 我可以使用哪些其他框架 以便当我的应用程序加载时它可以执行一些基本的 IO 文件读取并将值存
  • 如何在应用程序关闭时在 Android 通知中显示操作按钮?

    我有一个安卓应用程序 对于通知 我们必须显示一些操作按钮 当应用程序打开时 我们可以自由地构建通知并显示操作按钮 但是当应用程序关闭时 通知会在 Android 的通知托盘中收到 应用程序开发人员无法控制构建用户界面和操作按钮 我们现在如何
  • Android 应用程序安装失败:包 com.my.app 在条目 AndroidManifest.xml 处没有证书

    在 Android Studio 中 我生成了带有密钥库等的签名 APK 将 APK 安装到设备上时失败 并显示 无法安装应用程序 并且在 Android Monitor 中我看到以下行 Package com my app has no
  • Android:初始化本机 AudioRecord 对象时 AudioRecord 错误代码 -20

    Android 我想从麦克风读取缓冲区 以便我可以对其执行处理 以下是我的代码 int sampleRateInHz 8000 44100 22050 and 11025 int channelConfig AudioFormat CHAN
  • Android 中的 Fragment-Fragment 通信

    我在Android编程方面处于初级水平 所以我需要你真诚的帮助 请任何人帮助我 我正在尝试使用片段构建滑动用户界面 所以我真正的疑问是 我有一个Fragment say FragmentA 它有一个TextView and Button在其
  • socket.io xhr 在连接缓慢时出现错误(3G 移动网络)

    当我在 3G 移动网络 互联网连接速度慢 上测试我的真实聊天应用程序时 Socket io反复断开然后重新连接 我已经记录了原因 它说 xhr post error 这提高了 transport error 然后断开连接 我可以知道什么意思
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • Ionic 2 RC0 和 Angular 2 最新的 Android 构建错误(ngc:错误:静态解析符号值时遇到错误)

    当我使用构建android时出现错误ionic build android命令 ngc 错误 静态解析符号值时遇到错误 引用本地 非导出 符号 字典 考虑导出符号 原始 ts文件中的位置14 8 解析符号TRANSLATION PROVID
  • 如何禁用操作栏上“向上”按钮的翻转?

    背景 我做了一个 应用程序管理器 https play google com store apps details id com lb app manager 替代应用程序 我希望添加 RTL 从右到左 语言的翻译 因为我知道在某些 And
  • 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?

    我是 C 和 JNI 的新手 我尝试找到一种正确的方法 通过使用 JNI 将 java 中的 byte 转换为 C 中的 unsigned char 反之亦然 我正在安卓上工作 在谷歌和SO中寻找解决方案后 我还没有找到将java中的byt
  • 在新的 intel x86 android 模拟器中访问 google api

    我只是尝试在新的 x86 android 模拟器中运行我公司的应用程序 但是我们的应用程序依赖于 google 地图 API 而这在 google 随 android sdk 版本 17 提供的 x86 系统映像中不可用 我的直觉告诉我答案
  • 在android中,将相机预览流到视图上

    我想将 Android 相机的相机预览流式传输到视图上 目的是随后使用 onDraw 将各种内容添加到视图中 我不需要随时实际捕捉图像 它不必是最高质量或每秒最大数量的帧 有谁知道如何做到这一点 将其添加到您的 xml 中
  • Android 中的 OpenGL 缩小

    我正在使用 3D 对象并渲染它并通过扩展 GLSurfaceView 实现渲染器来显示它 问题是如何通过捏合和捏合进行缩小 下面是我的班级 package com example objLoader import java nio Byte
  • onTaskRemoved() 在华为和小米设备中没有被调用

    我一直在使用onTaskRemoved 服务中的方法 用于检测应用程序何时通过滑动从设备最近列表中删除 我执行一些日志记录和发生这种情况时需要执行的一些其他操作 它工作完美 然后我在运行Android 6 0的华为设备上检查了这个方法 该方
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何将样式应用于我拥有的所有 TextView? [复制]

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

    这里我有一个带有 setOnTouchListener 的 ViewFlipper 它工作得很好 然后我膨胀 ReLayNewsItem 然后将其添加到 ViewFlipper 现在我希望 WebView web 监听触摸事件并将它们传递给
  • 丢失应用程序的密钥库文件(但已启用 Google Play 应用程序签名)

    我已经失去了原来的keystore用于签署我的应用程序的文件 我的应用启用了 Google Play 应用签名 如果我联系 Google 支持人员 是否可以重置密钥 以便我可以继续上传到此包 我希望我可以做到这一点 因为应用程序签名已启用

随机推荐

  • rows.add 和 importRow 之间的区别

    在vb net中向数据表添加行时 rows add和importRow有什么区别 Dim dt As DataTable Dim dr As DataRow Add row this way dt rows add dr or this w
  • 了解 malloc 和 free 指针

    指针在 C 中是一个非常棘手的东西 对于很多人来说很难理解它 所以为了更好地理解我编写了以下代码 include
  • 在 Spring Webflux 功能应用程序中验证请求的最佳方法是什么

    在传统的 Web 应用程序中 很容易在控制器方法中验证请求主体 例如 ResponseEntity create Valid ResponseBody Post post 如果是 MVC 应用程序 我们可以通过注入一个来收集错误Bindin
  • 编译 CUDA 示例出现构建错误

    我运行的是 Windows 7 64 位 带有 Visual Studio 2008 我安装了 CUDA 驱动程序和 SDK SDK 附带了很多示例 包括编译的可执行文件和源代码 编译后的可执行文件运行得非常好 当我打开 vc90 解决方案
  • jQuery Ajax:如何等到 *async* 请求成功完成后再继续?

    我在加快 ajax 速度时遇到问题and功能性的 这是伪 原型代码 function blah1 arg1 arg1 is an array roughly 10 elements var arr each arg1 function i
  • Laravel:Form::open() 中的 HTTPS

    我在我的登录中为我的网站使用 SSL Cloudflare HTTPS 因为我使用 Laravel 不会将我的网站链接转换为 SSL 版本 它显示http版本 我如何强制 Laravel 使用https for me 例如
  • 不安全的 JavaScript 尝试访问 Google Chrome 中的框架

    我们的网络应用程序 基于 HTML5 SVG 和 JS 在除 Google Chrome 之外的所有浏览器中运行良好 在 Google Chrome 中 正常的 javascript 事件运行良好 但是 附加到 iFrame 的所有 jav
  • PowerShell - Set-Culture 似乎没有改变任何东西

    我有一个云服务 Web 角色 需要在其上运行一些 PowerShell 以确保服务器始终设置为正确的区域性 en AU 原因是微软可以随时重置文化价值观 当我跑步时 Get Culture I get 1033 en US English
  • 从数组中删除多个索引

    我有一个数组 我想删除一堆索引 var arr 0 1 2 3 4 5 6 var rmIndices 1 4 5 从 arr 中删除索引 1 4 5 的最佳方法是什么 注意PermutationGenerator在 Swift 3 中将会
  • 使用 Python 的 Vcard 解析器

    我正在解析我的 vcard 信息 复制到 txt 文件 以提取name number并将其放入字典中 数据样本 BEGIN VCARD VERSION 2 1 N MEO Apoio FN Apoio MEO TEL CELL PREF 1
  • SQL Server 计算列

    我有两列 都是整数 Wins and Losses 我有一个计算列WinPercentage as a decimal 14 3 我希望这是 WinPercentage Wins Losses Wins 其语法是什么 CREATE TABL
  • 如何在 gtsummary 中向“未知”添加百分比

    我有一个连续变量 其中有很大比例的未知数 我的顾问要求我将百分比放在该栏中的旁边 这个 reprex 模仿了我想做的事情 library tidyverse library gtsummary trial gt included with
  • 在 JavaScript 中使用“prototype”与“this”?

    有什么区别 var A function this x function do something and var A function A prototype x function do something 这些例子有非常不同的结果 在查
  • python 与 __le__、__ge__ 的错误?

    是我还是Python对以下代码感到困惑 我希望 le 被称为a lt ab not ge usr bin env python2 class B object def ge self other print ge unexpectedly
  • 按行计算平均日期

    我希望按行获取平均日期 其中每行包含两个日期 最终我找到了一个方法 发布在下面 不过 我使用的方法似乎比较麻烦 有没有更好的办法 my data read table text OBS MONTH1 DAY1 YEAR1 MONTH2 DA
  • 错误:找不到函数“%>%”

    我正在 R 中运行一个示例 完成这些步骤 到目前为止一切正常 除了此代码产生错误 words lt dtm gt as matrix gt colnames gt function x x nchar x lt 20 错误 找不到函数 gt
  • 从 WAV 文件中解码 DTMF

    继我的先前的问题 我的目标是从 C 检测 WAV 文件中的 DTMF 音调 然而 我真的很难理解这是如何做到的 我知道 DTMF 使用频率组合 并且可以使用 Goertzel 算法 以某种方式 我抓取了 Goertzel 代码片段 并尝试将
  • 服务器端文件浏览

    我正在开发一个 Web 应用程序 它从一组文本文件中读取数据并将其映射到 MySQL 数据库 目前 该表单需要手动输入文件路径 但我想向该字段添加一个文件选择器 以使该部分的设置不那么繁琐 我找到的解决方案都允许选择单个文件 但我正在寻找一
  • 如何使用 Selenium 自动化 Firefox Mobile?

    我需要在 Firefox Mobile 中运行 Selenium 测试 有人能描述一个简单的方法来做到这一点吗 我的调查表明 Firefox 移动版不受支持Appium one two Firefox Desktop has built i
  • 通过获取每个子项的位置动态地将子项添加到 LinearLayout

    我在获取孩子的位置时遇到问题线性布局 首先 我动态添加一些按钮 然后尝试返回每个子项的索引并将其显示到TextView 我在这里分享代码 java源代码 private String categories private LinearLay