我可以使用什么视图来创建类似 phone 的关于屏幕的内容?

What view(s) can I use in order to create something like the about screen of the phone?

我想写一个类似于 android 手机的关于屏幕的 activity。我希望它以 android 手机的关于屏幕的样式显示一些信息。 像这样

title1
info
-----------------
title2
info
-----------------
etc.

是否有我可以使用的特殊视图,或者它只是以特定方式放置多个视图的结果?或者 android studio 中有我可以使用的 activity 模板吗?

参见 PreferenceActivity or PreferenceFragment。它们是从代码或 xml 文件填充的特殊列表视图。有许多不同的首选项类型可供选择(复选框、开关、列表等)

偏好片段示例:

使用ListView。您可以为单元格创建自定义布局,然后使用数组或游标来填充数据。

ListView: A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.

ListAdapter 可以接收数据作为输入。适配器将在其 getView() 方法中扩展每个单元格的布局,并将数据分配给单元格中的各个视图。

在此处阅读有关 ListView 的更多信息:http://developer.android.com/reference/android/widget/ListView.html

您可以使用 ListView 和自定义 ArrayAdapter 来创建这样的屏幕。如果您需要有关如何创建自定义 ArrayAdapter 的任何帮助,请查看这个有用的教程 here

如果您想创建一个简单的列表,那么 ListView 可能是最简单的选择。您可能还想查看 ListActivity and/or ListFragment 以进一步简化流程。

如果您打算使用复杂的动画,或者让列表动态更新动画,您可能会更好地为您服务 RecyclerView,尽管使用它更复杂。

ListActivity 的直接实现可能如下所示:

public class MainActivity extends ListActivity {

String[] titles = { "title one", "title two" };
String[] descriptions = { "desc 1", "desc 2" };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setListAdapter(new ListAdapter() {

保持不变,除了 getCount()getView()

@Override
public int getCount() {
    return titles.length;
}

这将确保您列表的长度始终与您的数组一样。

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View view;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) parent.getContext().
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.row, parent, false);
    } else {
        view = convertView;
    }

    TextView title = (TextView) view.findViewById(R.id.title);
    TextView description = (TextView) view.findViewById(R.id.description);

    title.setText(titles[position]);
    description.setText(descriptions[position]);

    return view;
}

row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/title"
    android:textSize="24sp"
    android:textStyle="bold"/>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/description"
    android:textSize="20sp"/>

</LinearLayout>