android 类似淘宝物流详情布局


android 类似淘宝物流详情布局_第1张图片


界面布局主要是通过listView来实现的,listView item 左右布局。左边是竖线,状态图片,竖线。右边 是 物流信息和 时间。

开始左边线的高度很不好适配,最后请教网友,用了layout_weight属性。

竖线本来使用的是ImageView显示,结果线的高度变小,宽度也随之变小,导致屏幕根本看不清左边布局中状态图片上的线。

最后采用了View来绘制竖线,效果还挺理想的额。

具体的布局如下:

[java]  view plain  copy
  1. "1.0" encoding="utf-8"?>  
  2.        xmlns:android="http://schemas.android.com/apk/res/android"    
  3.        android:layout_width="fill_parent"    
  4.        android:layout_height="wrap_content"  
  5.        android:orientation="horizontal"  
  6.        >  
  7.       
  8.        android:layout_width="wrap_content"    
  9.        android:layout_height="fill_parent"  
  10.        android:layout_marginStart="10dip"   
  11.        android:orientation="vertical"  
  12.        android:gravity="center"  
  13.        >   
  14.         
  15.             android:id="@+id/View_logistic_tracking_line1"  
  16.             android:layout_width="2dip"  
  17.             android:layout_height="20dip"     
  18.             android:background="#DCDCDC"/>  
  19.             
  20.             android:id="@+id/mgView_logistic_tracking_status"  
  21.             android:layout_width="wrap_content"    
  22.             android:layout_height="wrap_content"   
  23.             android:src="@drawable/logistics_state1"          
  24.             android:contentDescription="@string/app_name"  
  25.             />       
  26.        
  27.             android:id="@+id/View_logistic_tracking_line2"  
  28.             android:layout_width="2dip"    
  29.             android:layout_height="0dip"  
  30.             android:layout_weight="1"  
  31.             android:background="#DCDCDC"/>  
  32.         
  33.         
  34.            android:id="@+id/ll_logistic_tracking_timeline"  
  35.            android:layout_width="fill_parent"    
  36.            android:layout_height="wrap_content"  
  37.            android:layout_marginLeft="10dip"  
  38.            android:layout_marginRight="10dip"  
  39.            android:orientation="vertical"  
  40.        >  
  41.          
  42.             android:id="@+id/tv_logistic_tracking_address"  
  43.             android:layout_width="match_parent"    
  44.             android:layout_height="wrap_content"   
  45.             android:layout_marginTop="20dip"  
  46.             android:textSize="20sp"  
  47.             android:textColor="#000000"  
  48.             />            
  49.        
  50.             android:id="@+id/tv_logistic_tracking_time"    
  51.             android:layout_width="match_parent"     
  52.             android:layout_height="wrap_content"  
  53.             android:layout_marginTop="10dip"  
  54.             android:layout_marginBottom="20dip"  
  55.             android:textSize="18sp"  
  56.             android:textColor="#000000"  
  57.             />  
  58.         
  59.     


自定义的适配器:

[java]  view plain  copy
  1. public class TimeLineAdapter extends BaseAdapter {  
  2.   
  3.     private Context mcontext=null;  
  4.     private List mlist=null;  
  5.     private LayoutInflater minflater;  
  6.       
  7.     public TimeLineAdapter ( Context context, List list  ){  
  8.         this.mcontext = context;  
  9.         minflater = LayoutInflater.from(context);  
  10.         mlist = list;  
  11.     }  
  12.     @Override  
  13.     public int getCount() {  
  14.         // TODO Auto-generated method stub  
  15.         ifnull!=mlist){  
  16.             return mlist.size();  
  17.         }  
  18.         return 0;  
  19.     }  
  20.   
  21.     @Override  
  22.     public Object getItem(int position) {  
  23.         // TODO Auto-generated method stub  
  24.         ifnull!=mlist){  
  25.             return mlist.get(position);  
  26.          }  
  27.         return null;  
  28.     }  
  29.   
  30.     @Override  
  31.     public long getItemId(int position) {  
  32.         // TODO Auto-generated method stub  
  33.         return position;  
  34.     }  
  35.   
  36.     @SuppressLint("InflateParams")  
  37.     @Override  
  38.     public View getView(int position, View convertView, ViewGroup parent) {  
  39.         // TODO Auto-generated method stub    
  40.          ViewHold viewHold;  
  41.         if(convertView == null){  
  42.             viewHold = new ViewHold();  
  43.             convertView = minflater.inflate(R.layout.timeline_item, null);  
  44.             viewHold.imageView1 = (ImageView)convertView.findViewById(R.id.mgView_logistic_tracking_status);  
  45.             viewHold.textView1 = (TextView)convertView.findViewById(R.id.tv_logistic_tracking_address);  
  46.             viewHold.textView2 = (TextView)convertView.findViewById(R.id.tv_logistic_tracking_time);  
  47.             viewHold.line1 = (View)convertView.findViewById(R.id.View_logistic_tracking_line1);  
  48.             convertView.setTag(viewHold);  
  49.         }else {  
  50.             viewHold = (ViewHold)convertView.getTag( );  
  51.         }  
  52.         if(position==0){  
  53.             viewHold.line1.setVisibility(View.INVISIBLE);  
  54.             viewHold.imageView1.setImageResource(R.drawable.logistics_state);  
  55.         }else{  
  56.             viewHold.line1.setVisibility(View.VISIBLE);  
  57.             viewHold.imageView1.setImageResource(R.drawable.logistics_state1);  
  58.         }  
  59.         viewHold.textView1.setText( mlist.get(position).getMaddress());  
  60.         viewHold.textView2.setText( mlist.get(position).getMtime());  
  61.         return convertView;  
  62.     }  
  63.       
  64.   
  65.     private final static class ViewHold{  
  66.           
  67.         ImageView imageView1;  
  68.         View line1;  
  69.         TextView  textView1;  
  70.         TextView textView2;       
  71.     }  
  72. }  

TimeLine定义:

[java]  view plain  copy
  1. public class TimeLine {  
  2.   
  3.     private String  maddress;  
  4.     private String  mtime;  
  5.       
  6.     public TimeLine( String address ,String time){  
  7.   
  8.         this.maddress = address;  
  9.         this.mtime = time;  
  10.     }  
  11.   
  12.   
  13.     public String getMaddress() {  
  14.         return maddress;  
  15.     }  
  16.   
  17.     public void setMaddress(String maddress) {  
  18.         this.maddress = maddress;  
  19.     }  
  20.   
  21.     public String getMtime() {  
  22.         return mtime;  
  23.     }  
  24.   
  25.     public void setMtime(String mtime) {  
  26.         this.mtime = mtime;  
  27.     }  
  28. }  

你可能感兴趣的:(android 类似淘宝物流详情布局)