我正在創建一個在線聊天應用程序。在那裏我使用列表視圖來顯示當時在線的聯繫人。我的問題是,我想在單行中顯示聯繫人姓名和綠色狀態圖標或類似的內容(如在Facebook或任何其他聊天應用程序中)。如何設計一個列表視圖,顯示單個行中的姓名和在線狀態
我不知道如何顯示聯繫人姓名+綠色的列表視圖 的右端任何人可以幫助我解決問題
我正在創建一個在線聊天應用程序。在那裏我使用列表視圖來顯示當時在線的聯繫人。我的問題是,我想在單行中顯示聯繫人姓名和綠色狀態圖標或類似的內容(如在Facebook或任何其他聊天應用程序中)。如何設計一個列表視圖,顯示單個行中的姓名和在線狀態
我不知道如何顯示聯繫人姓名+綠色的列表視圖 的右端任何人可以幫助我解決問題
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
>
<TextView
android:text="Contact name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<View
android:layout_width="10dip"
android:layout_height="match_parent"
android:background="@color/green"
/>
</LinearLayout>
看這就是你想要一個非常簡單的例子一個listview
內的自定義項目,而不是給你的代碼,我會建議你理解佈局通貨膨脹的概念,在那裏你可以用你設計的佈局來膨脹幾乎所有的容器佈局。
谷歌它你會發現你的案例很多例子看起來只有textview
和imageview
。
你需要的是一個從BaseAdapter
延伸的類。在那裏你可以爲每個listItem
定義自己的佈局。
因此,首先您必須定義一個包含聯繫人名稱的例如TextView
的佈局,例如一個ImageView
。
此佈局應該在BaseAdapter
的getView()
方法中自定義。 但請read this article,以確保你一個「平滑滾動」 listView
試試這個,
<?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:gravity="center_vertical" >
<TextView
android:id="@+id/friendname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2.5"
android:gravity="center_vertical"
android:paddingLeft="10dip"
android:singleLine="true"
android:text="usename" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:background="@drawable/profile"
android:paddingLeft="10dip"
/>
</LinearLayout>
對於你必須讓自定義佈局爲您ListView
項目象下面這樣:
<?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="wrap_content"
>
<TextView
android:text="Contact name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
/>
<ImageView
android:layout_width="10dip"
android:layout_height="match_parent"
android:background="green_circle_image"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
您可以使用下面的佈局爲您的自定義適配器:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/statusTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableRight="@drawable/status" />
</LinearLayout>
要改變你的圖像,你可以在你的自定義適配器中使用setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom) getView(...)。
例如:
public View getView(int position, View convertView, ViewGroup parent) {
convertView = context.getLayoutInflater().inflate(R.layout.item_element, null);
TextView statusTV = (TextView) convertView.findViewById(R.id.status);
statusTV.setText("...");
Drawable compoundDrawable = context.getResources().getDrawable(R.drawable.status);
statusTV.setCompoundDrawables(compoundDrawable, null, null, null);
return convertView;
}
,並使用viewHolder pattern爲ListView控件優化。
k.so此佈局是用於自定義適配器的權利.. –
是的,你是對的... –