2013-11-01 92 views
-3

我正在为Android进行聊天,我需要制作一个主要的xml布局。 将会有一个TextView来显示历史,EditText和发送按钮。所有视图都应该像whatsapp一样定位。 EditText和Button在屏幕的底部。剩下的空间转到TextView。 那么如何做到这一点,所以它会在任何屏幕和任何方向看起来不错? 我试图用android:layout_weight做它,但我不认为它会非常便携。 在此先感谢。Android中的聊天应用程序的布局

+2

如果您试图模仿其他应用程序的布局,则可以使用“UI Automater的转储视图层次结构”来检查其构建方式。另外你为什么不觉得layout_weight会是可移植的?你有特定的理由吗? – FoamyGuy

+0

因为layout_weight设置比例,但我的editText/Button的高度是固定的。因此,对于不同的屏幕尺寸,会给予它们不同的高度,留下一些空间。 – user1354033

+0

您是否与[提问此问题的人]有关(http://stackoverflow.com/questions/19890488/what-android-layout-should-i-use-for-a-simple-process-mapping-app)任何机会?你们两个似乎都是创建Whatsapp类似布局的大粉丝 –

回答

2

我不认为单个TextView是实现这一目标的最佳方法。

我建议使用ListView而不是巨大的TextView来保存整个对话历史记录。 ListView中的每个元素都会保存一个TextView和其他所有需要的视图来显示历史中的每条消息,并且默认情况下允许上下滚动查看整个历史记录。然后,您可以调整文字大小来处理不同的屏幕尺寸。

这是如何实现默认的Android消息应用程序,但您可以自定义ListView中的每个项目,使其看起来如何你想要的(如WhatsApp,例如)。

希望这会有所帮助。

+0

谢谢,当然我不仅仅使用TextView。我刚刚说过。不过谢谢你的答案。认为我的主要问题是正确定位视图 – user1354033

1

因为layout_weight设置比例,但我EDITTEXT的高度/按钮固定

所以呢?请勿将android:layout_weight放在固定部分上。

因此,对于不同的屏幕尺寸,会给予它们不同的高度,留下一些空间。

然后不要把android:layout_weight放在固定部分。你用锤子击打头部,然后抱怨你的头部疼痛。

步骤1:垂直LinearLayout

步骤#2:成绩单TextViewLinearLayout内,为0的高度和的重量1.

步骤#3:EditTextButton(水平LinearLayout?),垂直LinearLayout内部,高度为wrap_content且没有指定重量(默认为0)。

你的固定高度的东西,用的wrap_content的高度,将获得其像素配置,你的成绩单TextView将得到所有剩下的像素,其重量的1

我也呼应physphil的建议的礼貌在记录模式下使用ListView作为聊天记录,而不是TextView

+0

哇谢谢你!有史以来最好的答案! – user1354033