我有2个观点。 1)MyMenuRestaurent.axml 2)ImageAndSubTitle.axml
MyMenuRestaurent.axml的代码
<LinearLayout>
<ListView>
</ListView>
</LinearLayout>
图像和子标题代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/lightgray">
<ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:backgroundTint="#ff81d4fa">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip">
</LinearLayout>
<TextView
android:id="@+id/Text1"
android:text="Demo Item Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/blue"
android:textSize="20dip" />
<TextView
android:id="@+id/Text2"
android:text="Demo Price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dip"
android:textColor="@color/blue" />
</TableLayout>
</ScrollView>
</LinearLayout>
我有listview可点击。当点击一个项目时,单个项目的详细信息被打开。但如果我添加滚动视图(单击)不起作用。因为滚动视图块单击元素。我想点击项目和滚动视图。
答案 0 :(得分:0)
尝试在android:descendantFocusability="blocksDescendants"
中添加LinearLayout
,它可能如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/lightgray"
android:descendantFocusability="blocksDescendants">
希望它有所帮助。
答案 1 :(得分:0)
对于自定义列表视图,您必须具有适配器,并且您将为其传递自定义视图。因此,将onClickListener
放在适配器中自定义视图的父布局上,它将模仿列表视图的onItemClickListener
。
这是listview的自定义视图
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="120dp"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list_image"
android:src="@drawable/homeopathy"
android:scaleType="centerCrop"
android:tint="#7b000000"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="-67dp"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="15dp"
android:text="This is a sample text"
android:id="@+id/title"
/>
</LinearLayout>
并在适配器中
public View getView(int position, View convertView, ViewGroup parent) {
View vi = inflater.inflate(R.layout.list_row, null);
TextView title = (TextView) vi.findViewById(R.id.title);
ImageView thumb_image=(ImageView) vi.findViewById(R.id.list_image);
list= data.get(position);
// Setting all values in listview
title.setText(list.getTitle());
imageLoader.DisplayImage(list.getImage());
LinearLayout linLayout = (LinearLayout) vi.findViewById(R.id.linearLayout);
linLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do what you want to do
}
});
return vi;
}
答案 2 :(得分:0)
因为滚动视图块单击元素。我想点击项目和滚动视图。
您可以撰写自定义ListView
并覆盖其OnInterceptTouchEvent方法,以便从ScrollView
获取Touch事件。
实施此方法以拦截所有触摸屏动作事件。这允许您在将事件发送给您的孩子时观察事件,并在任何时候获得当前手势的所有权。
这样的代码:
public class InnerListview : ListView
{
...
public override bool OnInterceptTouchEvent(MotionEvent ev)
{
switch (ev.Action)
{
case MotionEventActions.Down:
setParentScrollAble(false);
break;
case MotionEventActions.Move:
break;
case MotionEventActions.Up:
case MotionEventActions.Cancel:
setParentScrollAble(true);
break;
}
return base.OnInterceptTouchEvent(ev);
}
private void setParentScrollAble(bool flag)
{
Parent.RequestDisallowInterceptTouchEvent(!flag);
}
}
在ListView
中使用此.axml
,如下所示:
<ListViewInScrollView.InnerListview
android:id="@+id/lv3"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#ffffff" />