[英]Set selection of a Linear Layout in A Scroll View
我在滾動視圖線性Layout中使行多次充氣。我試圖更改用戶選擇的行的背景顏色。但是我僅在某些區域選擇行,這會更改行的背景顏色。我不知道為什么會發生。請幫助我。
ScrollView XML
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/mainScroll"
android:layout_marginTop="5dp" >
<LinearLayout
android:id="@+id/mainData"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
內部布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/resultLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:background="@drawable/backgroundcolor"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/id1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:singleLine="true"
android:text="25 Sep 2013" />
<TextView
android:id="@+id/id2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:singleLine="true"
android:text="" />
<TextView
android:id="@+id/id3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:singleLine="true"
android:text="" />
<ImageView
android:id="@+id/id4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:src="@drawable/ic"/>
</LinearLayout>
</LinearLayout>
BackgroundColor.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="false"
android:state_pressed="false"
android:drawable="@color/grey" />
<item android:state_pressed="true"
android:drawable="@color/itemselected" />
<item android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/itemselected" />
</selector>
Color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="grey">#ffffff</color>
<color name="itemselected">#EDEDED</color>
</resources>
圖像作為圖像鏈接
它正在選擇中,但無法填滿整個布局的高度。請幫助我查找問題
嘗試將innerlayout的線性布局的寬度/高度更改為wrap_content? 另外,如果您發布代碼,也會有所幫助。
另外,我可能應該說,對於您嘗試執行的操作,可能應該使用列表視圖,而不是滾動視圖中的線性布局。
嘗試以下作為您的內部布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/resultLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#F00"
android:baselineAligned="false"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/id1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:singleLine="true"
android:text="25 Sep 2013" />
<TextView
android:id="@+id/id2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:singleLine="true"
android:text="coloumn 2" />
<TextView
android:id="@+id/id3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:singleLine="true"
android:text="Coloumn 2" />
<ImageView
android:id="@+id/id4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:src="@drawable/ic_launcher" />
</LinearLayout>
</LinearLayout>
我的建議是使用Custom listview而不是嘗試在scrollview
重復Linear Layout
內容。 在這里您還可以更靈活地完成相同的任務。 在這里,您必須重寫getView
方法以更改特定行的背景顏色。 您也可以使用ContextMenu 。
我建議您使用ListView
而不是ScrollView
和LinearLayout
。 因為ListView
具有它們的兩個屬性。 那么,為什么不嘗試一下呢?
請嘗試以下步驟。
1)將onItemClickListener
實現到您的列表視圖,如下所示。
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(
AdapterView<?> arg0, View arg1,
int position, long arg3) {
adapter.setSelectedPosition(position);
}
});
2)現在,在CustomAdapter
類中,編寫以下代碼
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.special_item_layout, null);
RelativeLayout relativeLayout = (RelativeLayout) convertView
.findViewById(R.id.relativeLayout1);
if ((adapter.getSelectedPosition()) == position) {
relativeLayout.setBackgroundResource(R.drawable.BackgroundColor);
} else {
relativeLayout.setBackgroundResource(R.color.transparent);
//other code
}
如果未選擇項目,則放置transparent
顏色。 您可以根據需要放置任何資源。
注意
您的列表在布局中必須具有singleChoice
選項。 而且沒有任何背景。
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="#00000000"
android:choiceMode="singleChoice">
</ListView>
嘗試這種方式可以做到這一點
final LinearLayout tripdetailsdata = (LinearLayout) inflater
.inflate(R.layout.linearLayout1, null);
final LinearLayout trip_data = (LinearLayout)tripdetailsdata.findViewById(R.id.linearLayout2);
trip_data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
trip_data1.setBackgroundColor(Color.WHITE);
trip_data.setBackgroundColor(Color.BLUE);
trip_data1=trip_data;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.