为可选项设置 ListView 设置,但突出显示不起作用



我做了一个超级简单的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>

最新更新