我有一个包含多个子项的线性布局有没有办法为我的线性布局设置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>
答案 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