android 类似淘宝物流详情布局

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

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

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

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

具体的布局如下:

[java] view plain copy
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout  
       xmlns:android="http://schemas.android.com/apk/res/android"    
       android:layout_width="fill_parent"    
       android:layout_height="wrap_content"  
       android:orientation="horizontal"  
       >  
      <LinearLayout   
       android:layout_width="wrap_content"    
       android:layout_height="fill_parent"  
       android:layout_marginStart="10dip"   
       android:orientation="vertical"  
       android:gravity="center"  
       >   
        <View   
            android:id="@+id/View_logistic_tracking_line1"  
            android:layout_width="2dip"  
            android:layout_height="20dip"     
            android:background="#DCDCDC"/>  
            <ImageView  
            android:id="@+id/mgView_logistic_tracking_status"  
            android:layout_width="wrap_content"    
            android:layout_height="wrap_content"   
            android:src="@drawable/logistics_state1"          
            android:contentDescription="@string/app_name"  
            />       
       <View   
            android:id="@+id/View_logistic_tracking_line2"  
            android:layout_width="2dip"    
            android:layout_height="0dip"  
            android:layout_weight="1"  
            android:background="#DCDCDC"/>  
      </LinearLayout>  
        <LinearLayout   
           android:id="@+id/ll_logistic_tracking_timeline"  
           android:layout_width="fill_parent"    
           android:layout_height="wrap_content"  
           android:layout_marginLeft="10dip"  
           android:layout_marginRight="10dip"  
           android:orientation="vertical"  
       >  
         <TextView   
            android:id="@+id/tv_logistic_tracking_address"  
            android:layout_width="match_parent"    
            android:layout_height="wrap_content"   
            android:layout_marginTop="20dip"  
            android:textSize="20sp"  
            android:textColor="#000000"  
            />            
       <TextView    
            android:id="@+id/tv_logistic_tracking_time"    
            android:layout_width="match_parent"     
            android:layout_height="wrap_content"  
            android:layout_marginTop="10dip"  
            android:layout_marginBottom="20dip"  
            android:textSize="18sp"  
            android:textColor="#000000"  
            />  
      </LinearLayout>  
  </LinearLayout>  

自定义的适配器:

[java] view plain copy
public class TimeLineAdapter extends BaseAdapter {  
  
    private Context mcontext=null;  
    private List<TimeLine> mlist=null;  
    private LayoutInflater minflater;  
      
    public TimeLineAdapter ( Context context, List<TimeLine> list  ){  
        this.mcontext = context;  
        minflater = LayoutInflater.from(context);  
        mlist = list;  
    }  
    @Override  
    public int getCount() {  
        // TODO Auto-generated method stub  
        if( null!=mlist){  
            return mlist.size();  
        }  
        return 0;  
    }  
  
    @Override  
    public Object getItem(int position) {  
        // TODO Auto-generated method stub  
        if( null!=mlist){  
            return mlist.get(position);  
         }  
        return null;  
    }  
  
    @Override  
    public long getItemId(int position) {  
        // TODO Auto-generated method stub  
        return position;  
    }  
  
    @SuppressLint("InflateParams")  
    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        // TODO Auto-generated method stub    
         ViewHold viewHold;  
        if(convertView == null){  
            viewHold = new ViewHold();  
            convertView = minflater.inflate(R.layout.timeline_item, null);  
            viewHold.imageView1 = (ImageView)convertView.findViewById(R.id.mgView_logistic_tracking_status);  
            viewHold.textView1 = (TextView)convertView.findViewById(R.id.tv_logistic_tracking_address);  
            viewHold.textView2 = (TextView)convertView.findViewById(R.id.tv_logistic_tracking_time);  
            viewHold.line1 = (View)convertView.findViewById(R.id.View_logistic_tracking_line1);  
            convertView.setTag(viewHold);  
        }else {  
            viewHold = (ViewHold)convertView.getTag( );  
        }  
        if(position==0){  
            viewHold.line1.setVisibility(View.INVISIBLE);  
            viewHold.imageView1.setImageResource(R.drawable.logistics_state);  
        }else{  
            viewHold.line1.setVisibility(View.VISIBLE);  
            viewHold.imageView1.setImageResource(R.drawable.logistics_state1);  
        }  
        viewHold.textView1.setText( mlist.get(position).getMaddress());  
        viewHold.textView2.setText( mlist.get(position).getMtime());  
        return convertView;  
    }  
      
  
    private final static class ViewHold{  
          
        ImageView imageView1;  
        View line1;  
        TextView  textView1;  
        TextView textView2;       
    }  
}  

TimeLine定义:
[java] view plain copy
public class TimeLine {  
  
    private String  maddress;  
    private String  mtime;  
      
    public TimeLine( String address ,String time){  
  
        this.maddress = address;  
        this.mtime = time;  
    }  
  
  
    public String getMaddress() {  
        return maddress;  
    }  
  
    public void setMaddress(String maddress) {  
        this.maddress = maddress;  
    }  
  
    public String getMtime() {  
        return mtime;  
    }  
  
    public void setMtime(String mtime) {  
        this.mtime = mtime;  
    }  
}  
 

发布了8 篇原创文章 · 获赞 3 · 访问量 975

猜你喜欢

转载自blog.csdn.net/flying0916/article/details/97009674
今日推荐