我在滚动视图线性Layout.i正在尝试更改用户选择的行的背景颜色多次充气。但是我只在某个区域选择行,它正在改变背景颜色我不知道为什么会这样。请帮助我。
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>
InnerLayout
<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>
图片为Image Link
它正在进行选择,但它没有填满布局的完整高度。请帮我找到问题
答案 0 :(得分:0)
尝试将innerlayout的线性布局的宽度/高度更改为wrap_content? 此外,如果您发布了代码,它会有所帮助。
另外,我应该说,对于你想要做的事情,你应该使用列表视图,而不是滚动视图中的线性布局。
答案 1 :(得分:0)
请尝试以下内部布局
<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>
答案 2 :(得分:0)
我的建议是使用Custom listview而不是尝试重复Linear Layout
中的scrollview
内容。在这里,您也可以更灵活地完成相同的任务。在这里,您必须使用override getView
方法来更改特定行的背景颜色。您也可以使用ContextMenu。
答案 3 :(得分:0)
我建议您使用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>
答案 4 :(得分:-1)
尝试这种方式可以做到这一点
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;
}
});