我可以使用哪些视图来创建类似于手机屏幕的内容?

时间:2015-07-22 11:59:30

标签: android android-layout android-studio android-view

我想写一个类似于android手机屏幕的活动。我希望它以Android手机的屏幕风格显示一些信息。 喜欢这个

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

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

4 个答案:

答案 0 :(得分:2)

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

  

ListView:一个显示垂直滚动列表中的项目的视图。该   items来自与此视图关联的ListAdapter。

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

在此处详细了解ListViewhttp://developer.android.com/reference/android/widget/ListView.html

答案 1 :(得分:1)

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

示例偏好片段:

enter image description here

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果您想创建一个简单的列表,那么ListView可能是最简单的选项。您可能还想查看ListActivity和/或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>