我做了一个超级简单的ListView,但突出显示功能不起作用,我不知道为什么。
我试图从列表选择器更改为背景。我用state_pressed和state_focused尝试了一下。我尝试在单独的文件中移动背景可绘制对象。
不显示警告,onItemClicklistener 工作正常,但没有颜色,无论哪种状态都无关紧要。
列表视图
<ListView
android:id="@+id/theListView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:listSelector="@drawable/listview"
android:clickable="true"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
</ListView>
列表选择器:列表视图
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape>
<solid
android:background="@color/colorPrimaryDark">
</solid>
</shape>
</item>
<item android:state_selected="false">
<shape>
<solid
android:background="@color/colorPrimaryDark">
</solid>
</shape>
</item>
</selector>
主活动
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] ninja={"1","2","3","4"};
ListAdapter theAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ninja);
ListView theListView = (ListView) findViewById(R.id.theListView);
theListView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
theListView.setAdapter(theAdapter);
theListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
view.setSelected(true);
view.setActivated(true);
Log.d(TAG, "onItemClick() returned: " + adapterView.getItemAtPosition(i).toString());
}
}) ;
}
}
list_item_notselected.xml (在可绘制目录中(
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#2f2f2f" />
</shape>
list_item_selected.xml(在可绘制目录中(
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#d23534" />
</shape>
list_item_style.xml(在可绘制目录中(
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/list_item_selected" android:state_selected="true" />
<item android:drawable="@drawable/list_item_selected" android:state_focused="true" />
<item android:drawable="@drawable/list_item_selected" android:state_activated="true" />
<item android:drawable="@drawable/list_item_notselected" />
</selector>
list_item.xml(在布局目录中(
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_item_style"
android:padding="1dp"
android:orientation="horizontal">
<ImageView
android:padding="5dp"
android:layout_gravity="center_vertical"
android:layout_width="35dp"
android:layout_height="40dp"
android:id="@+id/item_img"
/>
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="5dp"
android:textColor="#ffffff"
android:text="@string/app_name"
android:textAppearance="@android:style/TextAppearance" />
</LinearLayout>