有没有办法为具有多个子项的线性布局设置setOnItemclickListener

时间:2016-12-13 13:18:08

标签: android android-linearlayout onclicklistener

我有一个包含多个子项的线性布局有没有办法为我的线性布局设置onItemClickListener?

这是xml文件

  <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:orientation="horizontal">

           <ImageView
               android:layout_width="80dp"
               android:layout_height="80dp"
               android:padding="1dp"
               android:src="@drawable/fish"
               android:layout_marginLeft="7dp"
               />
           <ImageView
               android:layout_width="80dp"
               android:layout_height="80dp"
               android:padding="1dp"
               android:src="@drawable/fruits"
               android:layout_marginLeft="8dp"/>
           <ImageView
               android:layout_width="80dp"
               android:layout_height="80dp"
               android:padding="1dp"
               android:src="@drawable/vegetables"
               android:layout_marginLeft="8dp"/>
           <ImageView
               android:layout_width="80dp"
               android:layout_height="80dp"
               android:padding="1dp"
               android:src="@drawable/oils"
               android:layout_marginLeft="8dp"/>
       </LinearLayout>

5 个答案:

答案 0 :(得分:1)

你能做到的一种方法是

for(int i= 0 ; i < linearLayout.getChildCount() ; i++){
   View view  = linearLayout.getChildAt(i);
   view.setTag(i);
   view.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v){
           int position = (int) v.getTag();
        }
   });
}

其他方法是扩展LinearLayout并使用此功能创建一个

答案 1 :(得分:0)

只需设置

android:clickable="true"

到LinearLayout。另外,不要忘记在膨胀时为视图提供onClickListener。

答案 2 :(得分:0)

在LinearLayout中添加一个id,在inside活动中获取对该线性布局的引用并将onClickListener设置为该对象

答案 3 :(得分:0)

首先在XML中设置LinearLayout的id。 然后从代码中为此LinearLayout设置OnClickeListener。

试试这个。

 <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal"
       android:id="@+id/linearLayout">

       ...

   </LinearLayout>

 LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);

 linearLayout.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Do what you want.
                }
            });

答案 4 :(得分:0)

您似乎无法理解AdapterView小部件与基本ViewGroups之间的区别。无法在{{1}上设置一个具有开箱即用位置参数的侦听器}} ..

然而,您可以将其子类化,公开接口并迭代子元素。在它们中的每一个上设置一个LinearLayout,它只是调用暴露接口的实现以及迭代中该元素的索引。

OnClickListener