设置在Click Android上选择的线性布局

时间:2015-06-13 06:00:20

标签: android android-layout android-linearlayout

我在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);
        }
    }

1 个答案:

答案 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}}属性设置为相同的方法。