您知道是否可以将输入文本与图像合并?
1 回答
可能你的意思是像这个例子这样的图像视图你可以在列表中添加一个图标
经典的 Android ListView 是一个简单的文本列表——坚实但没有灵感。基本上,我们向 ListView 传递数组中的一堆单词,并告诉 Android 使用简单的内置布局将这些单词倒入列表中。但是,我们可以有一个列表,其行由图标、图标和文本、复选框和文本或任何我们想要的内容组成。这只是向适配器提供足够的数据并帮助适配器为每一行创建更丰富的视图对象集的问题。例如,假设我们想要一个 ListView,其条目由一个图标和一些文本组成。我们可以为如下所示的行构造一个布局,可以在 FancyLists/Static 示例项目的 res/layout/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="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/selection"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
/>
</LinearLayout>
此布局使用 LinearLayout 设置一行,左侧是图标,右侧是文本(采用漂亮的大字体)。然而,默认情况下,Android 不知道我们想在 ListView 中使用这个布局。为了建立连接,我们需要为我们的适配器提供前面显示的自定义布局的资源 ID:
public class StaticDemo extends ListActivity {
private TextView selection;
private static final String[] items={"lorem", "ipsum", "dolor",
"sit", "amet",
"consectetuer", "adipiscing", "elit", "morbi", "vel",
"ligula", "vitae", "arcu", "aliquet", "mollis",
"etiam", "vel", "erat", "placerat", "ante",
"porttitor", "sodales", "pellentesque", "augue", "purus"};
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new ArrayAdapter<String>(this,
R.layout.row, R.id.label,
items));
selection=(TextView)findViewById(R.id.selection);
}
public void onListItemClick(ListView parent, View v,
int position, long id) {
selection.setText(items[position]);
}
}
这遵循上一个 ListView 示例的一般结构。这里的关键区别是我们已经告诉 ArrayAdapter 我们要使用我们的自定义布局 (R.layout.row) 并且单词应该去的 TextView 在该自定义布局中称为 R.id.label。注意:请记住,要引用布局 (row.xml),请使用 R.layout 作为布局 XML 文件 (R.layout.row) 的基本名称的前缀。结果是一个左侧有图标的 ListView;在这个例子中,所有的图标都是一样的,如图 13-1 所示。