Android物流跟蹤

來源:互聯網
上載者:User

標籤:android   布局   時間軸   

最近在網上看到時間軸的布局效果,嘗試按照這個原理,實現物流跟蹤的效果,目前已經實現了,效果如。



介面布局主要是通過listView來實現的,listView item 左右布局。左邊是豎線,狀態圖片,豎線。右邊 是 物流資訊和 時間。

開始左邊線的高度很不好適配,最後請教網友,用了layout_weight屬性。

豎線本來使用的是ImageView顯示,結果線的高度變小,寬度也隨之變小,導致螢幕根本看不清左邊布局中狀態圖片上的線。

最後採用了View來繪製豎線,效果還挺理想的額。

具體的布局如下:

<?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>


自訂的適配器:

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;}@Overridepublic int getCount() {// TODO Auto-generated method stubif( null!=mlist){return mlist.size();}return 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubif( null!=mlist){return mlist.get(position); }return null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@SuppressLint("InflateParams")@Overridepublic 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定義:

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;}}




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android物流跟蹤

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.