2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<ListView xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/listview"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
android:cacheColorHint=
"#00000000"
android:dividerHeight=
"30px"
android:divider=
"@drawable/ic_launcher"
android:fadingEdge=
"vertical"
android:scrollbars=
"horizontal|vertical"
android:fastScrollEnabled=
"true"
android:scrollbarStyle=
"outsideInset"
/>
<!--
android:cacheColorHint=
"#00000000"
android:dividerHeight=
"30px"
android:divider=
"@drawable/ic_launcher"
android:fadingEdge=
"vertical"
android:scrollbars=
"horizontal|none"
android:fastScrollEnabled=
"true"
android:scrollbarStyle=
"outsideInset"
1
>outsideInset : 该ScrollBar显示在视图(view)的边缘,增加了view的padding. 如果可能的话,该ScrollBar仅仅覆盖这个view的背景.
2
>outsideOverlay : 该ScrollBar显示在视图(view)的边缘,不增加view的padding,该ScrollBar将被半透明覆盖
3
>insideInset :该ScrollBar显示在padding区域里面,增加了控件的padding区域,该ScrollBar不会和视图的内容重叠.
4
>insideOverlay : 该ScrollBar显示在内容区域里面,不会增加了控件的padding区域,该ScrollBar以半透明的样式覆盖在视图(view)的内容上.
2. ListView的一些重要属性:
首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false
android:stackFromBottom="true"
第二是transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。 android:transcriptMode="alwaysScroll"
第三cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。
如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了 第四divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线
android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了
第五fadingEdge属性,上边和下边有黑色的阴影
android:fadingEdge="none"设置后没有阴影了~
第六scrollbars属性,作用是隐藏listView的滚动条,
android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏
第七fadeScrollbars属性,android:fadeScrollbars="true" 配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。
第八fastScrollEnabled属性 ,
很多开发者不知道ListView列表控件的快速滚动滑块是如何启用的,这里Android开发网告诉大家,辅助滚动滑块只需要一行代码就可以搞定,如果你使用XML布局只需要在ListView节点中加入 android:fastScrollEnabled="true" 这个属性即可,而对于Java代码可以通过myListView.setFastScrollEnabled(true); 来控制启用,参数false为隐藏。 还有一点就是当你的滚动内容较小,不到当前ListView的3个屏幕高度时则不会出现这个快速滚动滑块,同时该方法仍然是AbsListView的基础方法,可以在ListView或GridView等子类中使用快速滚动辅助。
第九drawSelectorOnTop属性
When set to true, the selector will be drawn over the selecteditem. Otherwise the selector is drawn behind the selected item. Thedefault value is false.
android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到
android:drawSelectorOnTop="false"点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的
3. ListView的扩展:
今天从网上看了个扩展的listView的例子,感觉还蛮炫,自己也试着做了下。
由于比较简单,所有就直接上代码:
- public class ExtendedListView extends ExpandableListActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
-
- MyExpandableListAdapter adapter=new MyExpandableListAdapter();
- setListAdapter(adapter);
-
- }
- public class MyExpandableListAdapter extends BaseExpandableListAdapter{
- public String[] groups={"我的好友","大学同学","高中同学"};
- public String[][] childrens={{"小张","小李","小丽","向明"},{"向明","向明","向明","向明"},{"向明","向明","向明","向明"}};
- public Object getChild(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return childrens[groupPosition][childPosition];
- }
-
- public long getChildId(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return childPosition;
- }
-
- public View getChildView(int groupPosition, int childPosition,
- boolean isLastChild, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- TextView textView=getGenericView();
- textView.setText(getChild(groupPosition, childPosition).toString());
- return textView;
- }
- //新建一个TextView
- public TextView getGenericView() {
- // Layout parameters for the ExpandableListView
- AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT, 64);
-
- TextView textView = new TextView(ExtendedListView.this);
- textView.setLayoutParams(lp);
- // Center the text vertically
- textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
- // Set the text starting position
- textView.setPadding(36, 0, 0, 0);
- return textView;
- }
-
- public int getChildrenCount(int groupPosition) {
- // TODO Auto-generated method stub
- return childrens[groupPosition].length;
- }
-
- public Object getGroup(int groupPosition) {
- // TODO Auto-generated method stub
- return groups[groupPosition];
- }
-
- public int getGroupCount() {
- // TODO Auto-generated method stub
- return groups.length;
- }
-
- public long getGroupId(int groupPosition) {
- // TODO Auto-generated method stub
- return groupPosition;
- }
-
- public View getGroupView(int groupPosition, boolean isExpanded,
- View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- TextView textView = getGenericView();
- textView.setText(getGroup(groupPosition).toString());
- return textView;
- }
-
- public boolean hasStableIds() {
- // TODO Auto-generated method stub
- return true;
- }
-
- public boolean isChildSelectable(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return true;
- }
-
- }
- }
看一下运行在模拟器上的效果:
4. 具有弹性的ListView:
效果图:
主要代码:
- import android.content.Context;
- import android.graphics.Rect;
- import android.util.AttributeSet;
- import android.view.MotionEvent;
- import android.view.animation.Animation;
- import android.view.animation.Animation.AnimationListener;
- import android.view.animation.TranslateAnimation;
- import android.widget.AbsListView;
- import android.widget.ListView;
-
-
-
-
- public class ElasticListView extends ListView {
- private float y;
- private Rect normal = new Rect();
- private boolean animationFinish = true;
-
- public ElasticListView(Context context) {
- super(context);
- init();
- }
-
- public ElasticListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
-
- protected void onScrollChanged(int l, int t, int oldl, int oldt) {
-
- }
-
- boolean overScrolled = false;
- private void init() {
- setOnScrollListener(new OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- }
-
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- overScrolled = false;
- }
- });
- }
-
- @Override
- protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
- overScrolled = true;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- commOnTouchEvent(ev);
- return super.onTouchEvent(ev);
- }
-
- public void commOnTouchEvent(MotionEvent ev) {
- if (animationFinish) {
- int action = ev.getAction();
- switch (action) {
- case MotionEvent.ACTION_DOWN:
- y = ev.getY();
- break;
- case MotionEvent.ACTION_UP:
- y = 0;
- if (isNeedAnimation()) {
- animation();
- }
- break;
- case MotionEvent.ACTION_MOVE:
- final float preY = y == 0 ? ev.getY() : y;
- float nowY = ev.getY();
- int deltaY = (int) (preY - nowY);
-
- y = nowY;
-
- if (isNeedMove(deltaY)) {
- if (normal.isEmpty()) {
-
- normal.set(getLeft(), getTop(), getRight(), getBottom());
- }
-
- layout(getLeft(), getTop() - deltaY / 2, getRight(), getBottom() - deltaY / 2);
- }
- break;
- default:
- break;
- }
- }
- }
-
-
- public void animation() {
-
- TranslateAnimation ta = new TranslateAnimation(0, 0, 0, normal.top - getTop());
- ta.setDuration(200);
- ta.setAnimationListener(new AnimationListener() {
- @Override
- public void onAnimationStart(Animation animation) {
- animationFinish = false;
-
- }
-
- @Override
- public void onAnimationRepeat(Animation animation) {
-
- }
-
- @Override
- public void onAnimationEnd(Animation animation) {
- clearAnimation();
-
- layout(normal.left, normal.top, normal.right, normal.bottom);
- normal.setEmpty();
- animationFinish = true;
- }
- });
- startAnimation(ta);
- }
-
-
- public boolean isNeedAnimation() {
- return !normal.isEmpty();
- }
-
-
- public boolean isNeedMove(float deltaY) {
- if (overScrolled && getChildCount() > 0) {
- if (getLastVisiblePosition() == getCount() - 1 && deltaY > 0) {
- return true;
- }
- if (getFirstVisiblePosition() == 0 && deltaY < 0) {
- return true;
- }
- }
- return false;
- }
- }
测试代码:
- public class MainActivity extends Activity {
- ElasticListView listView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- listView = (ElasticListView) findViewById(R.id.listview);
-
- String[] listValues = new String[20];
- for (int i=0;i<listValues.length;i++) {
- listValues[i] = "TextView" + i;
- }
- listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listValues));
- }
- }
- public class MainActivity extends Activity {
- ElasticListView listView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- listView = (ElasticListView) findViewById(R.id.listview);
-
- String[] listValues = new String[20];
- for (int i=0;i<listValues.length;i++) {
- listValues[i] = "TextView" + i;
- }
- listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listValues));
- }
- }
5. 自动显示、隐藏布局的ListView:
下面这个效果是,向下滑动 ListView ,其顶部布局自动显示;向上滑动 ListView ,其顶部的布局自动隐藏。效果如下:
首先这个效果的实现大致需要如下几步:
1. 让其没有 ActionBar ,可在 style.xml 中设置主题样式 Theme.AppCompat.Light.NoActionBar 。
2. 为了让 ListView 的第一个条目不被其顶部的布局所遮住,所以给 ListView 增加了一个头部 HeaderView 。头部的高度正好等于 ActionBar 的高度,高度为:R.dimen.abc_action_bar_default_height_material 。
添加头部的代码:
-
- View header = new View(this);
- header.setLayoutParams(new AbsListView.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
-
-
- (int) getResources().getDimension(
- R.dimen.abc_action_bar_default_height_material)));
- mListView.addHeaderView(header);
3. 设置 ListView 的最小滑动距离,其滑动距离大于最小滑动距离后我们才认为 ListView 有所滑动,得到最小滑动距离代码:
- minInstance = ViewConfiguration.get(this).getScaledTouchSlop();
4. 由上面的第三步可以看出,要判断其滑动,或者根据其需要上下的滑动来显示或者隐藏 ListView 顶部的布局都需要滑动监听事件,可以使用 OnTouchListener 接口来完成。在该接口重写的 onTouch() 方法中来获取滑动的坐标,并根据坐标差来判断 ListView 的滑动方向。
5. 由于需要根据 ListView 的滑动方向来显示或者隐藏其顶部的布局,所以其顶部的布局需要有显示或者隐藏的动画效果,可以使用 ObjectAnimator 来实现。关于 ObjectAnimator 在前面的博客中有所使用。
6. 当然了要实现该效果还需要在布局文件中让一个组件至于 ListView 上才行,布局文件代码:
activity_main.xml ;
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ListView
- android:id="@+id/list_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
- <android.support.v7.widget.Toolbar
- android:id="@+id/toolbar"
- android:background="@android:color/holo_blue_dark"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
- </RelativeLayout>
完整的 MainActivity.java 的代码:
- package com.crazy.showlistview;
-
- import android.animation.ObjectAnimator;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.support.v7.widget.Toolbar;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.ViewConfiguration;
- import android.view.ViewGroup;
- import android.widget.AbsListView;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
-
- public class MainActivity extends AppCompatActivity {
-
- private ListView mListView;
- private Toolbar mToolbar;
-
- private int minInstance;
-
- private float mFirstY;
-
- private float mCurrentY;
-
- private int status;
- private boolean mShow = true;
- private ObjectAnimator animator;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- init();
- scrollListViewEvent();
- }
-
- private void init() {
-
- String[] strings = new String[20];
- int length = strings.length;
- for (int i = 0; i < length; i++) {
- strings[i] = "数据:" + i;
- }
-
- mListView = (ListView)findViewById(R.id.list_view);
- mToolbar = (Toolbar)findViewById(R.id.toolbar);
-
- View header = new View(this);
- header.setLayoutParams(new AbsListView.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
-
-
- (int) getResources().getDimension(
- R.dimen.abc_action_bar_default_height_material)));
- mListView.addHeaderView(header);
-
- mListView.setAdapter(new ArrayAdapter<>(this,
- android.R.layout.simple_list_item_1, strings));
- minInstance = ViewConfiguration.get(this).getScaledTouchSlop();
- }
-
-
- private void scrollListViewEvent(){
- mListView.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- mFirstY = event.getY();
- break;
- case MotionEvent.ACTION_MOVE:
- mCurrentY = event.getY();
- if (mCurrentY - mFirstY > minInstance) {
- status = 0;
- } else {
- status = 1;
- }
- if (status == 1) {
- if (mShow) {
- toolbarAnim(1);
- mShow = false;
- }
- } else {
- if (!mShow) {
- toolbarAnim(0);
- mShow = true;
- }
- }
- break;
- }
- return false;
- }
- });
-
- }
-
- private void toolbarAnim(int i) {
- if (animator != null && animator.isRunning()) animator.cancel();
- if (i == 0)
- animator = ObjectAnimator.ofFloat(
- mToolbar,
- "translationY",
- mToolbar.getTranslationY(),
- 0);
- else
- animator = ObjectAnimator.ofFloat(
- mToolbar,
- "translationY",
- mToolbar.getTranslationY(),
- -mToolbar.getHeight());
- animator.start();
- }
- }
6. ListView实现聊天:
下载地址:http://download.csdn.net/detail/shenggaofei/9615547
SimpleAdapter适配器初次尝试,那么离实现最终想要的效果也不远啦,只要仿照chata的布局,再编写第二位聊天人(“路人甲”)的布局chatb——只要让他靠右显示就行~。
但是这样我们每次都要很麻烦的定义一遍SimpleAdapter,为了“偷懒”,我们直接来编写自己的Adapter,这样每次定义就方便多了。
先附上最终的代码:
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- chatlist = (ListView) findViewById(R.id.chatlist);
- list = new ArrayList<ChatEntity>();
- ChatEntity chat1=new ChatEntity("小魏","嗨~",R.layout.chata);
- list.add(chat1);
- ChatEntity chat2=new ChatEntity("路人甲","你好!",R.layout.chatb);
- list.add(chat2);
- ChatEntity chat3=new ChatEntity("小魏","我是小魏~",R.layout.chata);
- list.add(chat3);
-
- chatlist.setAdapter(new ChatAdapter(TryChatPop2Activity.this,list));
- }
如上代码,在setAdapter时使用了自己的ChatAdapter,以下是类文件代码:
- public class ChatAdapter implements ListAdapter{
- private ArrayList<ChatEntity> list;
- private Context ctx;
-
- public ChatAdapter(Context context ,ArrayList<ChatEntity> list) {
- ctx = context;
- this.list = list;
- }
-
- public boolean areAllItemsEnabled() {
- return false;
- }
- public boolean isEnabled(int arg0) {
- return false;
- }
- public int getCount() {
- return list.size();
- }
- public Object getItem(int position) {
- return list.get(position);
- }
- public long getItemId(int position) {
- return position;
- }
- public int getItemViewType(int position) {
- return position;
- }
- public View getView(int position, View convertView, ViewGroup parent) {
- ChatEntity entity = list.get(position);
- int itemLayout = entity.getLayoutID();
-
- LinearLayout layout = new LinearLayout(ctx);
- LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- vi.inflate(itemLayout, layout,true);
-
- TextView txvName = (TextView) layout.findViewById(R.id.txvName);
- txvName.setText(entity.getName());
-
- TextView txvText = (TextView) layout.findViewById(R.id.txvInfo);
- txvText.setText(entity.getInfo());
- return layout;
- }
- public int getViewTypeCount() {
- return list.size();
- }
- public boolean hasStableIds() {
- return false;
- }
- public boolean isEmpty() {
- return false;
- }
- public void registerDataSetObserver(DataSetObserver observer) {
- }
- public void unregisterDataSetObserver(DataSetObserver observer) {
- }
-
- }
ChatAdapterd的类实现了ListAdapter的接口,并通过ChatEntity中的内容设置了定义布局中聊天对象名字txvName及聊天内容txvInfo的内容,当然你肯定能明白ChatEntity就是存放聊天信息等内容的实体类。
这里我们可以这样写,就是因为ListAdapter的接口是绑定Data和ListView的适配器,实际上我们常用的ArryaAdapter、SimpleAdapter、CursorAdapter就是他的子类。
关系如下:
这样再看代码,甚至再回头看SimpleAdapter就感觉好理解多了,其他内容不细说了,具体参照源码:http://download.csdn.net/detail/xiaowei_cqu/3886321
再上一遍效果图:
7. 动态改变ListView的布局:
效果图:
代码如下:
- import android.app.ListActivity;
- import android.content.Context;
- import android.os.Bundle;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.BaseAdapter;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
-
- public class MainActivity extends ListActivity {
-
- private ListAddLayoutAdapter mAdapter;
- @SuppressWarnings("unused")
- private LayoutInflater lInflater;;
-
- int[] image = {
- R.drawable.s_beibei,
- R.drawable.s_jingjing,
- R.drawable.s_huanhuan,
- R.drawable.s_yingying,
- R.drawable.s_nini
- };
-
- String[] show_name = {
- "贝贝",
- "晶晶",
- "欢欢",
- "迎迎",
- "妮妮"
- };
-
- private int id = 0;
- @SuppressWarnings("unused")
- private int last = 0;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mAdapter = new ListAddLayoutAdapter(this);
- this.setListAdapter(mAdapter);
-
- this.getListView().setOnItemClickListener(new OnItemClickListener(){
- public void onItemClick(AdapterView<?> arg0, View arg1, int position,
- long arg3) {
- id = position;
- mAdapter.notifyDataSetChanged();
- last = position;
- }
- });
- }
-
- public class ListAddLayoutAdapter extends BaseAdapter {
-
- private Context context;
- private MainActivity activity;
-
- public ListAddLayoutAdapter(Context context) {
- this.context = context;
- this.activity = (MainActivity)context;
- lInflater = activity.getLayoutInflater();
- }
-
- public int getCount() {
- return image.length;
- }
-
- public Object getItem(int arg0) {
- return null;
- }
-
- public long getItemId(int position) {
- return position;
- }
-
- public View getView(int position, View arg1, ViewGroup arg2) {
- LinearLayout layout = new LinearLayout(context);
- layout.setOrientation(LinearLayout.VERTICAL);
- layout.setPadding(0, 8, 0, 8);
-
- layout.addView(addTitleView(position));
-
- if(id==position){
- layout.addView(addCustomView(position));
- }
-
- return layout;
- }
-
- public View addTitleView(int i){
- LinearLayout layout = new LinearLayout(context);
- layout.setOrientation(LinearLayout.HORIZONTAL);
-
- ImageView iv = new ImageView(context);
- iv.setImageResource(image[i]);
- layout.addView(iv,
- new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.WRAP_CONTENT,
- LinearLayout.LayoutParams.WRAP_CONTENT));
-
-
- TextView tv = new TextView(context);
- tv.setText(show_name[i]);
- tv.setTextSize(18f);
- layout.addView(tv,
- new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.WRAP_CONTENT,
- LinearLayout.LayoutParams.WRAP_CONTENT));
-
- layout.setGravity(Gravity.CENTER);
- return layout;
- }
-
-
- public View addCustomView(int i){
- View view = new View(context);
-
- switch(i){
- case 0:
- ImageView iv1 = new ImageView(context);
- iv1.setImageResource(R.drawable.beibei);
- view = iv1;
- break;
-
- case 1:
- ImageView iv2 = new ImageView(context);
- iv2.setImageResource(R.drawable.jingjing);
- view = iv2;
- break;
-
- case 2:
- ImageView iv3= new ImageView(context);
- iv3.setImageResource(R.drawable.huanhuan);
- view = iv3;
- break;
- case 3:
- ImageView iv4 = new ImageView(context);
- iv4.setImageResource(R.drawable.yingying);
- view = iv4;
- break;
- case 4:
- ImageView iv5 = new ImageView(context);
- iv5.setImageResource(R.drawable.nini);
- view = iv5;
- break;
- }
- return view;
- }
- }
- }
也可以动态加载布局文件也可以的:
在addCustomView()方法中这么写也是可以的:
- <span style="font-size:16px;">case 1:
- view = lInflater.inflate(R.layout.main, null);
- break;
-
- </span>
图片就放你们喜欢的。。
|