我可以使用什么视图来创建类似 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>
我想写一个类似于 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>