Android:使用我自己的自定义布局来填充滚动视图

时间:2011-09-01 10:27:38

标签: android xml android-layout custom-component

我一直在学习并从头开始构建一个Android应用程序,而且我已经碰壁了。 我在Android开发者页面上阅读了关于可自定义的UI组件的信息,并认为我可以使用这些组件在我的应用程序中包含聊天页面的消息。

我制作了XML文件,但我不知道如何从我的代码中调用这些布局文件。 目前,我从数组中读取消息,然后通过循环创建TextView并通过代码为其设置必要的属性,然后将其添加到scrollView中的RelativeLayout。这一切都很好但我希望我的消息显示更多信息(例如时间和收件人是否收到/读取它),这是新XML文件的来源,他们已经设置了字段和布局,所以我我想我可以调用它们,设置一些变量并完成它。

正如我之前所说,问题是我不知道如何引用代码中的布局文件。我已经阅读了android开发者页面上关于构建自己的UI元素的所有文章,我也搜索了我的公平份额,但显然我是唯一一个想过这样做的人,或者我可以找不到合适的关键字。所以现在我问你们。非常感谢你们给我的任何答案。

修改 我一直在做一些研究,我认为我需要做的是编写自己的适配器来处理我自己的消息类和我自己的XML布局。但是我不知道从哪里开始,因为我找不到任何关于如何编写自己的适配器的好文档。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作,但这将创建一个新的TextView,忽略您拥有的任何布局:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView);
TextView textView = new TextView(this);
textView.setText(message);
scrollView.addView(textView);
textView.setText(timeAndDate);
scrollView.addView(textView);

我从未亲自使用过ScrollView,所以我对上述功能并不是100%肯定,但它符合我对LinearLayout和RelativeLayout的体验。

或者,既然您已经拥有自定义布局,那么您可以这样做:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView);
TextView textView = (TextView)findViewById(R.id.textView);
textView.setText(messageTimeDate);
scrollView.addView(textView);

这基本上就是你如何处理它。我不是100%确定你是否可以在任一实现中多次添加textView。如果抛出异常,则可以使用文本视图的数组列表,例如:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView);
ArrayList<TextView> textView = new ArrayList<TextView>();
textView.add((TextView)findViewById(R.id.textView));
textView.get(index).setText(messageTimeDate);
scrollView.addView(textView.get(index).getId());

无论我将textView作为id放在哪里,你都可以使用message或timeDate,然后在我引用的每一件事中做两件事。

答案 1 :(得分:0)

对于那些对我如何做的感兴趣的人(如果你自己也遇到同样的问题):
对于我想用自己的随机数据集创建的每个列表,我创建了自己的适配器,扩展了BaseAdapter。通过简单地覆盖getView方法,可以膨胀并填充列表项的不同部分 我使用this教程帮助我创建自己的适配器。