我有这个ListView
只需要显示数据
所以我不想让它可点击。
首先,我尝试将XML listview更改为:
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:clickable="false" >
但它没有用。
所以为了解决我的问题,我设置了代码:
list.setSelector(android.R.color.transparent);
但我无法相信没有更好的解决方案。有什么想法吗?
答案 0 :(得分:53)
以下是评论:
这样做的一种方法是:
ListView.setOnClickListener(null);
或
您可以添加android:focusable="false"
android:focusableInTouchMode="false"
或
布局android:listSelector="@android:color/transparent"
干杯。
答案 1 :(得分:52)
只需覆盖适配器中的isEnabled(position)并返回false
@Override
public boolean isEnabled(int position) {
return false;
}
答案 2 :(得分:12)
覆盖以下方法。返回false表示所有项目都不可点击。
@override
public boolean areAllItemsEnabled() {
return false;
}
并覆盖以下方法以返回哪个项目无法点击
public boolean isEnabled(int position) {
if(position == your_item_pos) {
return false;
}
return true;
}
答案 3 :(得分:4)
android:listSelector="@android:color/transparent"
它将点击的颜色更改为与未点击时相同的颜色! 所以看起来好像是纯文本......这是一个解决方法。
答案 4 :(得分:2)
只需在适配器类中复制此方法即可。 什么都不做.........
@Override
public boolean isEnabled(int position) {
return false;
}
您可以设置任何条件,使某些选定的项目不可点击。
@Override
public boolean isEnabled(int position) {
//Y for non clickable item
if(data_list.get(position).equalsIgnoreCase("Y"))
{
return false;
}
return true;
}
答案 5 :(得分:1)
android:focusable="true"
到listview里面的任何项目,现在listview不可点击
答案 6 :(得分:1)
您可以使用
yourListView.setOnItemClickListener(null);
答案 7 :(得分:1)
简单方法:
listView.setSelector(android.R.color.transparent);
答案 8 :(得分:0)
试试此代码
在 Adapter.getView()
中i.setOnClickListener( null );
i.setLongClickable( false );
i.setClickable( false );
答案 9 :(得分:0)
只需将android:enabled =“false”设置为listview,它就可以实现这一点。为什么不必要的继续覆盖方法..
答案 10 :(得分:0)
事实上, @override isEnabled()和 setOnClickListener(空) setClickable(假) setLongClickable(假) 没有为我工作。 我通过覆盖performItemClick
来解决它@Override
public boolean performItemClick(View view, int position, long id) {
if(!clickAble){
return false;
}
return super.performItemClick(view,position,id);
}
答案 11 :(得分:0)
我有这个只需要显示数据的ListView。所以我不想让它可点击。
我已经在我的一个项目中完成了这项工作,并且下面的示例工作正常。
基本上,你只需要:
<强> MainActivity.java 强>
@media (min-width:900px) and (max-width: 1000px) {
.imgbox { background-color:green;}
}​
的 activity_main.xml中强>
---&gt; 确保ListView小部件正在使用wrap_content进行layout_width和layout_height
package com.sample.listview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// data source
String[] arrayData = {"Debian", "Ubuntu", "Kali", "Mint"};
// ListView Widget from a Layout
ListView listView = (ListView) findViewById(R.id.mainListView);
// an ArrayAdapter (using a layout as model for displaying the array items)
ArrayAdapter aa = new ArrayAdapter<String>(this, R.layout.main_list_item_layout, arrayData);
// binding the ArrayAdapter with the ListView Widget
listView.setAdapter(aa);
}
}
的 main_list_item_layout.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.sample.listview.MainActivity">
<ListView
android:id="@+id/mainListView"
android:layout_width="wrap_content" <---- HERE
android:layout_height="wrap_content" <---- HERE
/>
</LinearLayout>
就是这样: ListView无法点击,只是在屏幕上显示数据。
答案 12 :(得分:0)
这是因为您的ListView项可能具有可聚焦或可单击的元素,请在XML布局文件或代码中尝试以下方法:
将此属性添加到ListItem XML文件的根ViewGroup元素(即LinearLayout,RelativeLayout等):
android:descendantFocusability =“ blocksDescendants”
将此行添加到您的列表适配器方法中,该方法负责创建/回收列表项(很可能是getView()
或newView()
),而parent是列表项的ViewGroup:< / p>
parent.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);