将各种数据以合适的形式显示在View中给用户看。
ArrayAdapter
支持泛型操作,最简单的一个Adapter,只能展现一行文字~
adapter = new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1,datas);
ArrayAdapter的参数说明:
第一个参数:context上下文对象
第二个参数:每一个item的样式,可以使用系统提供,也可以自定义就是一个TextView
第三个参数:数据源,要显示的数据
系统提供的item的样式,可以试一试
simple_list_item1:单独的一行文本框
simple_list_item2:有两个文本框组成
simple_list_item_checked每项都是由一个已选中的列表项
simple_list_item_multiple_choice:都带有一个复选框
simple_list_item_single_choice:都带有一个单选框
ArrayAdapter有五种布局类型:
simple_expandable_list_item_1: | |
---|---|
simple_expandable_list_item_2: | |
simple_list_item_checked: | |
simple_list_item_multiple_choice: | |
simple_list_item_single_choice: |
SimpleAdapter(简单适配器)
同样具有良好扩展性的一个Adapter,可以自定义多种效果!
adapter = new SimpleAdapter(MainActivity.this,lists,R.layout.list_item
,new String[]{"image","theme","content"}
,new int[]{R.id.image1,R.id.text1,R.id.text2});
simpleAdapter中五个参数的
第一个参数:上下文对象
第二个参数:数据源是含有Map的一个集合
第三个参数:每一个item的布局文件
第四个参数:new String[]{}数组,数组的里面的每一项要与第二个参数中的存入map集合的的key值一样,一一对应
第五个参数:new int[]{}数组,数组里面的第三个参数中的item里面的控件id
BaseAdapter
BaseAdapter使用相对最广,因为局限性小,使用起来更加自由,自己写,抽象类
使用BaseAdapter比较简单,主要是通过继承此类来实现BaseAdapter的四个方法:
public int getCount(): 适配器中数据集的数据个数;
public Object getItem(int position): 获取数据集中与索引对应的数据项;
public long getItemId(int position): 获取指定行对应的ID;
public View getView(int position,View convertView,ViewGroup parent): 获取没一行Item的显示内容。
参考链接:
https://www.cnblogs.com/endv/p/9774417.html
https://www.cnblogs.com/xianfeng-zhang/p/8134684.html
一. 列表和列表视图Spinner
在value中arrays.xml定义一个数组
使用步骤:
在布局中添加Spinner 设置数据源 设置显示的主题 添加点击的响应事件code:
北京
上海
广州
深圳
mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {//选择item的选择点击监听事件
public void onItemSelected(AdapterView arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
// 将所选mySpinner 的值带入myTextView 中
myTextView.setText("您选择的是:" + arg2+"个");//文本说明
}
public void onNothingSelected(AdapterView arg0) {
// TODO Auto-generated method stub
myTextView.setText("Nothing");
}
});
ListView列表视图
ListView添加组件 xmlcode:
activity_main.xml
array.xml
第一行代码Android
Android开发与实践
疯狂Android讲义
精通Android Studio
mainActivity.java
package com.example.bean.myapplication39v1;
import android.app.Activity;
import android.app.ListActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] data = new String[]{"第一行代码Android","Android开发与实践","疯狂Android讲义","精通Android Studio"};
ListView listView;
ArrayAdapter adapter;
adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_multiple_choice,data);
//setListAdapter(adapter);
listView = (ListView) findViewById(R.id.list0);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
//通过下标来获取内容
String str = parent.getItemAtPosition(position).toString();
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
//position 数据的下标 id 数据的id
//Toast.makeText(MainActivity.this, "position="+position+"id="+id, Toast.LENGTH_SHORT).show();
}
});
}
}
Activity继承ListActivity(extends)
code:
List<Map> listitem = new ArrayList<Map>(); //存储数据的数组列表
//写死的数据,用于测试
int[] image_expense = new int[]{R.mipmap.detail_income, R.mipmap.detail_payout }; //存储图片
String[] expense_category = new String[] {"发工资", "买衣服"};
String[] expense_money = new String[] {"30000.00", "1500.00"};
for (int i = 0; i < image_expense.length; i++)
{
Map map = new HashMap();
map.put("image_expense", image_expense[i]);
map.put("expense_category", expense_category[i]);
map.put("expense_money", expense_money[i]);
listitem.add(map);
}
//创建适配器
// 第一个参数是上下文对象
// 第二个是listitem
// 第三个是指定每个列表项的布局文件
// 第四个是指定Map对象中定义的两个键(这里通过字符串数组来指定)
// 第五个是用于指定在布局文件中定义的id(也是用数组来指定)
SimpleAdapter adapter = new SimpleAdapter(getActivity()
, listitem
, R.layout.fragment_one_item
, new String[]{"expense_category", "expense_money", "image_expense"}
, new int[]{R.id.tv_expense_category, R.id.tv_expense_money, R.id.image_expense});
ListView listView = (ListView) v.findViewById(R.id.lv_expense);
listView.setAdapter(adapter);
参考链接:
https://blog.csdn.net/qq_38217237/article/details/79044448
https://www.cnblogs.com/AnneHan/p/9726391.html
二.网格视图 GridView 当屏幕上有很多元素(文字、图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现。 GridView的一些属性:1. | android:numColumns=”auto_fit” | //GridView的列数设置为自动,也可以设置成2、3、4…… |
---|---|---|
2. | android:columnWidth=”90dp " | //每列的宽度,也就是Item的宽度 |
3. | android:stretchMode=”columnWidth" | //缩放与列宽大小同步 |
4. | android:verticalSpacing=”10dp” | //两行之间的边距 |
5. | android:horizontalSpacing=”10dp” | //两列之间的边距 |
6. | android:cacheColorHint="#00000000" | //去除拖动时默认的黑色背景 |
7. | android:listSelector="#00000000" | //去除选中时的黄色底色 |
8. | android:scrollbars=“none” | //隐藏GridView的滚动条 |
9. | android:fadeScrollbars=“true” | //设置为true就可以实现滚动条的自动隐藏和显示 |
10. | android:fastScrollEnabled=“true” | //GridView出现快速滚动的按钮(至少滚动4页才会显示) |
11. | android:fadingEdge=“none” | //GridView衰落(褪去)边缘颜色为空,缺省值是vertical。(可以理解为上下边缘的提示色) |
12. | android:fadingEdgeLength=“10dip” | //定义的衰落(褪去)边缘的长度 |
13. | android:stackFromBottom=“true” | //设置为true时,你做好的列表就会显示你列表的最下面 |
14. | android:transcriptMode=“alwaysScroll” | //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内 |
15. | android:drawSelectorOnTop=“false” | //点击某条记录不放,颜色会在记录的后面成为背景色,内容的文字可见(缺省为false) |
code:
界面布局
在GridView控件中,我们通过android:numColumns="4"指定了网格的列数为4;通过android:horizontalSpacing="10dp"和android:verticalSpacing="10dp"指定了网格之间的水平距离和垂直距离都为10dp。
网格元素布局
资源储存
在该实例中,我们需要对众多的应用软件图标以及应用软件名称进行储存。很显然,应用软件图标以及应用软件名称之间存在着一一对应的关系,我们可以使用HashMap分别对应用软件图标以及应用软件名称进行存储,然后再将HashMap添加到ArrayList中,便可以完成资源的储存了。具体实现方法如下
//将图标图片和图标名称存入ArrayList中
//Author:博客园-依旧淡然
ArrayList<HashMap> item = new ArrayList<HashMap>();
for (int i = 0; i < resIds.length; i++) {
HashMap map = new HashMap();
map.put("itemImage", resIds[i]);
map.put("itemName", name[i]);
item.add(map);
}
其中,数组resIds[]储存着应用软件图标的资源id;数组name[]储存着应用软件名称,并通过for循环遍历语句将其存入了HashMap中。
简单适配器SimpleAdapter
简单适配器SimpleAdapter继承自BaseAdapter,用于将静态数据映射到xml文件中定义好的视图当中。比如可以指定静态数据为由Map组成的ArrayList。在ArrayList中每个条目对应List中的一行,Map可以包含多项数据。
SimpleAdapter的构造方法如下:
public SimpleAdapter (Context context, List<? extends Map
三.图像切换器 ImageSwitcherImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果
重要方法
setImageURI([Uri](file:///F:/Android/api/docs_r01-linux/reference/android/net/Uri.html) uri):设置图片地址
setImageResource(int))(int resid):设置图片资源库
setImageDrawable(Drawable drawable):绘制图片
1.获取到xml布局中的ImageSwitcer控件
2.给isImages设置工厂方法.setFactory((ViewSwitcher.ViewFactory)this);这个方法就是要给ImageSwitcher这个控件中加入ImageView这样的内容,方便切换。这里需要重写一个方法View makeView(){return imageView}
3.得到传入该Activity的参数(点击这个图片时要传入该图片的position)
4.数据源需要用到,在这里初始化了。
5.给ImageSwitcher设置数据源isImage.setImageResource(images[currentPosition]);
6.写一下两个button的点击触发方法。一个displayPrevious(View view) 一个displayNext(View view)方法。改变图片的方式就是增加/减少currentPosition,然后设置ImageResource
code:
public class DisplayActivity extends Activity implements ViewSwitcher.ViewFactory {
//注意这里该Activity需要实现ViewFactory这个接口中的一些方法,就是下面我们要用到的makeView这个方法
//声明一个图片切换器
private ImageSwitcher isImages;
//记录当前显示的第几张图片,是一个数组的索引
private int currentPosition;
int[] images;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
//初始化切换器
isImages = (ImageSwitcher) findViewById(R.id.imageSwitcher1);
//给切换器加一个factory 可以把它看成是一个容器
isImages.setFactory((ViewSwitcher.ViewFactory) this);
//当前显示的图片的索引就是从intent传过来的附加信息,我们通过getIntExtra得到他
currentPosition = getIntent().getIntExtra("position",0);
images = new int[]{
R.mipmap.image1,R.mipmap.image2,R.mipmap.image3,
R.mipmap.image4,R.mipmap.image5,R.mipmap.image6,
R.mipmap.image7,R.mipmap.image8,R.mipmap.image9,
R.mipmap.image1,R.mipmap.image2,R.mipmap.image3,
R.mipmap.image4,R.mipmap.image5,R.mipmap.image6,
R.mipmap.image7,R.mipmap.image8,R.mipmap.image9
};
//给图片切换器设置图片
isImages.setImageResource(images[currentPosition]);
}
public void displayPrevious(View view){
currentPosition--;
if(currentPositionimages.length-1){
Toast.makeText(this,"已经是最后一张图片了",Toast.LENGTH_SHORT).show();
currentPosition = images.length-1;
}
isImages.setImageResource(images[currentPosition]);
}
@Override
public View makeView() {
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
return imageView;
}
}
原文链接:https://blog.csdn.net/a243845305/article/details/50254961
四.画廊视图 Gallery
Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框。他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显示的是一个水平的列表框。Gallery与Spinner有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个、下一个列表项。
Gallery常用的XML属性及相关方法
XML属性 | 相关方法 | 说明 |
---|---|---|
android:animationDuration | setAnimationDuration(int) | 设置列表项切换时的动画持续时间 |
android:gravity | setGravity(int) | 设置对齐方式 |
android:spacing | setSpacing(int) | 设置Gallery内列表项之间的间距 |
android:unselectedAlpha | setUnselectedAlpha(int) | 设置没有选中列表项的透明性 |
Gallery本身的用法非常简单----基本上和Spinner的用法相似,只要为他提供一个内容Adapter即可,该Adapter的getView方法返回的View作为Gallery列表的列表项;如果程序需要监控到Gallery选择项的改变,可以通过为Gallery添加OnItemSelectedListener监听器即可实现。
Layout/main.xml
上面的布局很简单,只定义了两个组件:ImageSwitcher和Gallery组件。主程序也很简单,为ImageSwitcher传入一个ViewFactory对象,为Gallery传入一个Adapter对象。这样ImageSwitcher和Gallery就可以工作了。
为了让ImageSwitcher可以显示Gallery中选中的图片,为Gallery绑定一个叫做OnItemSelectedListener监听。
主程序:GalleryTest.java
import android.app.Activity;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;
public class GallaryTest extends Activity{
int[] imageIds = new int[]
{
R.drawable.shuangzi, R.drawable.shuangyu,
R.drawable.chunv, R.drawable.tiancheng, R.drawable.tianxie,
R.drawable.sheshou, R.drawable.juxie, R.drawable.shuiping,
R.drawable.shizi, R.drawable.baiyang, R.drawable.jinniu,
R.drawable.mojie };
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Gallery gallery = (Gallery) findViewById(R.id.gallery);
// 获取显示图片的ImageSwitcher对象
final ImageSwitcher switcher = (ImageSwitcher)
findViewById(R.id.switcher);
// 为ImageSwitcher对象设置ViewFactory对象
switcher.setFactory(new ViewFactory()
{
@Override
public View makeView()
{
ImageView imageView = new ImageView(GallaryTest.this);
imageView.setBackgroundColor(0xff0000);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
return imageView;
}
});
// 设置图片更换的动画效果
switcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
switcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));
// 创建一个BaseAdapter对象,该对象负责提供Gallery所显示的图片
BaseAdapter adapter = new BaseAdapter()
{
@Override
public int getCount()
{
return imageIds.length;
}
@Override
public Object getItem(int position)
{
return position;
}
@Override
public long getItemId(int position)
{
return position;
}
// 该方法的返回的View就是代表了每个列表项
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// 创建一个ImageView
ImageView imageView = new ImageView(GallaryTest.this);
imageView.setImageResource(imageIds[position % imageIds.length]);
// 设置ImageView的缩放类型
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new Gallery.LayoutParams(75, 100));
TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);
imageView.setBackgroundResource(typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0));
return imageView;
}
};
gallery.setAdapter(adapter);
gallery.setOnItemSelectedListener(new OnItemSelectedListener()
{
// 当Gallery选中项发生改变时触发该方法
@Override
public void onItemSelected(AdapterView parent, View view,
int position, long id)
{
switcher.setImageResource(imageIds[position % imageIds.length]);
}
@Override
public void onNothingSelected(AdapterView parent)
{
}
});
}
}
参考链接:https://www.cnblogs.com/Yang-jing/p/3922119.html
五.选项卡 TabHost介绍
TabHost可以方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器大小相同的组件摆放区域
TabHost是一个简单的容器,提供如下两种方法来创建选项卡
newTabSpec(String tag):创建选项卡
addTab(TabHost.TabSpec tabSpec):添加选项卡
使用TabHost有三种方法
方法1,继承TabActivity
主布局文件不需要定义TabHost组件,这里用三个垂直的LinearLayout作为标签页,每个标签页里面有两个TextView组件
方法2,在布局文件中使用TabHost,不用继承TabActivity
使用findViewById获取TabHost组件
1 在界面布局中定义TabHost组件,并为该组件定义选项卡内容
2 使用findViewById获取TabHost组件
3 通过TabHost对象的方法来创建和添加选项卡
方法3基本和方法2类似,不用继承TabActivity,只是Tab的内容分开到单独的xml文件,每个标签页都需要inflate一次,和方法2最大的区别就是标签页分开到不同的xml文件中
六.滚动视图 ScrollView xml创建滚动视图有两种,一种是ScrollView,另一种是HorizontalScrollView.
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
请注意:ScrollView里只能有一个子控件,如果有多个就会报错!!
如果想要用两个TextView的话可以用线性布局管理器LinearLayout(或者其它的)将括起来,这样就不会报错了
Java中new关键字创建
MainActivity.java文件
package com.example.c_huimin.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout ll = super.findViewById(R.id.ll);
LinearLayout ll2 = new LinearLayout(MainActivity.this);
ll2.setOrientation(LinearLayout.VERTICAL);
ScrollView scrollView = new ScrollView(MainActivity.this);
ll.addView(scrollView);
scrollView.addView(ll2);
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(R.drawable.img03);
ll2.addView(imageView);
TextView textView = new TextView(MainActivity.this);
textView.setText(R.string.dictionary);
ll2.addView(textView);
}
}
//这段代码好比一个线性布局管理器里嵌套一个线性布局管理器,子线性布局管理器里又有2个控件,一个是ImageView, 另一个是TextView
string.xml文件
My Application
123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n123\n我爱你\n
activity_main.xml文件
参考链接:https://blog.csdn.net/Huimin_520/article/details/80377179
七.自动完成文本框 AutoCompleteTextView
自动完成文本框(AutoCompleteTextView)从EditText派生而出,实际上他也是一个文本编辑框,但它比普通编辑框多了一个功能:当用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户选择,当用户选择某个菜单后,AutoCompleteTextView按用户选择自动填写该文本框
AutoCompleteTextView除了可使用EditText提供的XML属性和方法之外,还有以下的属性
android:completionHint | setCompletionHint(CharSequence) | 设置下拉菜单中的提示标题 |
---|---|---|
android:completionHintView | 设置下拉菜单中提示标题的视图 | |
android:completionThreshold | setThreshold(int) | 设置用户至少输入几个字符才会显示提示 |
adnroid:dropDownAnchor | setDropDownAnchor(int) | 设置下拉菜单的定位“锚点”组件,如果没有指定该属性,将使用该TextView本身作为定位”锚点“组件 |
adnroid:dropDownHeight | setDropDownHeight(int) | 设置下拉菜单的高度 |
android:dropDownHorizontalOffest | 设置下拉菜单与文本框之间的水平偏移,下拉菜单默认与文本框左对齐 | |
adnroid:dropDownVerticalOffest | 设置下拉菜单与文本框之间的垂直偏移,下拉菜单默认紧跟文本框 | |
android:dropDownWidth | setDropDownWidth(int) | 设置下拉菜单的宽度 |
android:popupBackground | setDropDownBackgroundResource(int) | 设置下拉菜单的背景 |
使用AutoCompleteTextView很简单,只要为它设置一个Adapter,该Adapter封装了AutoCompleteTextView的预测文本
package com.example.autocompletetextview;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.os.Build;
public class MainActivity extends Activity {
//定义字符串数组,作为提示的文本
String[] books = new String[] {
"my name is xie",
"my name is qing",
"my name is cheng",
"my name is ding",
"my name is na"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
//创建一个ArrayAdapter,封装数组
ArrayAdapter aa = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, books);
AutoCompleteTextView view = (AutoCompleteTextView)findViewById(R.id.auto);
//设置Adapter
view.setAdapter(aa);
}
}
参考链接:https://blog.csdn.net/qq_27384607/article/details/47151195
八. 题目记录 列表选择框的功能是 B A.按下按钮后出现一个列表 B.提供一系列选择项供用户选择1.00/1.00 C.可以选择若干个列表 D.可以有选择性地把列表框起来获取列表选择框的值可以使用 A
A.getSelectItem()方法 B.getText()方法 C.findViewById()方法 D.OnItemSelected()方法 0000关于列表选择框下列说法错误的是 D
A.通常只能选择一个选择项 B.可以使用适配器保存列表选择项 C.可以使用String资源保存列表选择0.00/1.00 D.可以直接将列表项赋值给选择框列表选择框和列表视图的区别是 B
A.列表视图占屏幕空间较小
B.列表选择框是下拉形式的,而列表视图是平铺的1.00/1.00
C.列表选择框不能使用适配器
D.列表选择框比列表视频直观
关于适配器下列哪些说法是正确的 D
A.适配器用于手机与外设之间的兼容问题 B.ArrayAdapter可以提供多种信息 C.SimpleAdapter只能提供文字信息 D.适配器主要是将数据绑定在UI控件上图像切换器特有的功能是 B
A.可以设置适配器 B.可以使用动画效果1.00/1.00 C.可以使用src加载图片 D.可以显示图像画廊视图 C
A.某一时刻只能看到一幅图片 B.标记为ImageSwitcher C.按水平方向排列显示内容1.00/1.00 D.不能使用适配器 关于选项卡下列不正确的说法是 C A.需要为每一个标签页创建一个布局文件 B.TabHost是选项卡的标记 C.选项卡会增加窗体的数量1.00/1.00 D.选项卡的好处是将页面分成多个标签页 滚动视图 C A.一般在.XML文件中创建滚动视图 B.滚动视图可以放置多个组件 C.使用滚动视图可以浏览比窗口大的页面1.00/1.00 D.滚动视图实现了翻页功能 自动完成文本框 B A.使用EditText标记 B.在输入了一些文字后提供一相关的可选项 C.可以使用entris设置可选项 D.可以自动填充文本框 列表选择框的标签是 D A.ArrayAdaptor B.ListView C.List D.Spinner作者:xbean1028