我在ScrollView
内部有多个线性布局。每个linear layout
都有一个图像,我想在listview
中按照我们的选择设置线性布局背景。 / p>
XML
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="vertical">
<ImageView
android:id="@+id/img1"
android:layout_width="90dp"
android:layout_height="50dp"
android:background="@mipmap/ic_launcher"
android:layout_gravity="center" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout2"
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="vertical">
<ImageView
android:id="@+id/img2"
android:layout_width="90dp"
android:layout_height="50dp"
android:background="@mipmap/ic_launcher"
android:layout_gravity="center" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout3"
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="vertical">
<ImageView
android:id="@+id/img3"
android:layout_width="90dp"
android:layout_height="50dp"
android:background="@mipmap/ic_launcher"
android:layout_gravity="center" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout4"
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="vertical">
<ImageView
android:id="@+id/img4"
android:layout_width="90dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@mipmap/ic_launcher" />
</LinearLayout>
</ScrollView>
我已经像这样点击了imageView:
layout1.setBackgroundColor(Color.BLUE);
但这并没有给我所需的输出。请帮我解决这个问题
更改所选状态:
public void changeState(){
for (int i = 0; i < mainLayout.getChildCount(); i++) {
View child = mainLayout.getChildAt(i);
child.setSelected(false);
}
}
答案 0 :(得分:2)
在drawable文件夹ex:background_linear
中创建一个xml drawable
写下面的代码
LinearLayout
然后将layout1.setSelected(true);
设置为xml布局中false
的背景。
点击图片视图调用此方法
LinearLayout
要删除选择,您必须通过int
调用相同的方法。
如果您有多个id
,那么您应该记住之前选择的布局。为此,您可以这样做:
定义int previously_selected_layout;
以存储先前所选视图的 imageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((View)view.getParent()).setSelected(true);
View v1=findViewById(previously_selected_layout);
if(v1!=null) v1.setSelected(false);
previously_selected_layout=view.getParent().getId();
}
});
。
ClickListener
点击图片视图
ImageView
如果您不希望将onClick
设置为java中的每个ImageView
,请将xml中所有<div id="man"></div>
的{{1}}属性设置为相同的方法。