我遇到了ListView的问题,只有在我向下滚动才能看到列表项时才会发生。
这是我的主要xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/AddAlarm"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:clickable="true"
android:layout_margin="10dp" >
<ImageView
android:src="@drawable/add"
android:gravity="right"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginRight="0dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="20dp"
android:gravity="left"
android:textSize="25dp"
android:text="@string/add_alarm" />
</LinearLayout>
<ListView
android:id="@+id/ListaAlarmas"
android:scrollbars="vertical"
android:focusable="false" android:clickable="false"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
这是我在上面的ListView中加载的Row项xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ToggleButton
android:id="@+id/CheckBox"
android:textOn=""
android:textOff=""
android:focusableInTouchMode="false"
android:focusable="false"
android:layout_gravity="center"
android:background="@drawable/clock_off"
android:layout_margin="10dp"
android:layout_height="45dp"
android:layout_width="45dp" />
<View
android:id="@+id/firstDivider"
android:layout_height="fill_parent"
android:focusableInTouchMode="false"
android:focusable="false"
android:layout_width="2dp"
android:background="#999999" />
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:focusableInTouchMode="false"
android:focusable="false"
android:layout_weight="3"
android:layout_marginLeft="30dp" >
<TextView
android:id="@+id/TextoHora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"/>
<TextView
android:id="@+id/TextoRepetir"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
第一个LinearLayout是可点击的(AddAlarm),它只是将另一个项添加到ListView。 ListView中的每个项目都由ToggleButton和2个TextView组成。起初,ToggleButton不可点击,但我通过添加:
解决了android:focusableInTouchMode="false"
android:focusable="false"
所以,一切正常,直到列表中有太多项目我需要向下滚动才能查看它们。事实上,它实际上工作正常,直到我实际向下滚动。 即使ListView中有更多项目,它也能正常工作,但我不向下滚动查看它们。
问题是滚动时,ListView上的项目不再可以点击。它不会使用setOnItemClickListener方法,甚至不会获得焦点(橙色背景)。
任何人都可以找出问题所在吗?
答案 0 :(得分:0)
这可能会解决您的问题或可能不是答案。 您可以在自定义适配器中尝试此操作 这将禁用焦点(橙色突出显示)。
public CustomAdapterView(Context context,YourModel data)
{
super( context );
setOnClickListener((OnClickListener) context);
setClickable(true);
setFocusable(false);
}
如果您使用notifyDataSetChanged更新ListView它将无法正常使用CustomAdapter。请参阅this帖子。
答案 1 :(得分:0)
你需要设置listview的xml,如下所示: 机器人:descendantFocusability = “blocksDescendants” 然后你可以点击。这是因为切换按钮存在于列表项中。