我刚刚开始学习 Android,并且一直在开发一个简单的应用程序,用户可以在其中与计算机进行简单的对话。
我的问题是,如何在运行时以允许用户输入显示在视图上的方式设置 UI?随着输入提示的增加,会显示更多的内容,所以我需要使用滚动条,我相信这可以通过滚动视图布局来处理。
基本上,我想要实现的目标与聊天应用程序在运行时显示内容的方式非常相似。我该怎么做呢?我环顾四周,但无法准确地将自己指向正确的方向。
有多种方法可以解决这个问题:
ListView
甚至 aListActivity
并将每条新消息添加为新条目。ListView
默认情况下是可滚动的。TextView
withandroid:inputType=textMultiLine
来获得一个简单的多行文本视图。EditText
来标记对话的一部分,复制它们等等。另请参阅:从 Android AlertDialog 复制文本?如果我在你那里,我会按这个顺序试一试。我还将创建一个自定义ListAdapter
并覆盖getView()
以自定义您想要的消息。这是一个例子(不完全相同,但应该给你一个想法):Android Spinner databind using array list
一种想法是使您发送的所有消息都向左对齐,并且所有收到的消息都向左对齐。这样,它看起来就像 iOS 消息传递应用程序。
您可以使用 ScrollView 创建聊天会话。首先,尝试这样的事情:
聊天活动.java:
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
public class ChatActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chat);
LinearLayout layout = (LinearLayout)findViewById(R.id.chatWindow);
//When you get a new message to display, you can add it at runtime like this:
TextView message1 = new TextView(this);
message1.setText("how are you");
layout.addView(message1);
//Add another message
TextView message2 = new TextView(this);
message1.setText("I'm fine");
layout.addView(message2);
}
}
然后创建一个chat.xml 资源:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/chatWindow"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" />
</ScrollView>
稍后,您可以使用 AsyncTask 之类的东西在更新聊天时与用户进行更好的交互。AsyncTask 允许您在用户使用 UI 时在后台执行操作。