一、列表视图ListView
1、ListView允许在页面上分行展示数据列表,例如新闻列表、商品列表等,方便用户浏览与操作
2、ListView去掉分隔线
设置属性:
android:divider="@null"
android:dividerHeight="0dp"
3、ListView去掉点击的动画效果
设置属性:
android:listSelector="#00000000"
4、例子
ListViewActivity.java
package com.example.chapter08; import androidx.appcompat.app.AppCompatActivity; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ListView; import com.example.chapter08.adapter.PlanetBaseAdapter; import com.example.chapter08.bean.Planet; import com.example.chapter08.util.ImageUtil; import com.example.chapter08.util.ToastUtil; import java.util.List; public class ListViewActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, CompoundButton.OnCheckedChangeListener { private List<Planet> planetList; private CheckBox ck_divider; private CheckBox ck_selector; private ListView lv_planet; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); lv_planet = findViewById(R.id.lv_planet); planetList = Planet.getDefaultList(); PlanetBaseAdapter adapter = new PlanetBaseAdapter(this, planetList); lv_planet.setAdapter(adapter); lv_planet.setOnItemClickListener(this); ck_divider = findViewById(R.id.ck_divider); ck_selector = findViewById(R.id.ck_selector); ck_divider.setOnCheckedChangeListener(this); ck_selector.setOnCheckedChangeListener(this); } @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { ToastUtil.show(this, "您选择的是:" + planetList.get(position).getName()); } @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if (compoundButton.getId() == R.id.ck_divider) { // 显示分隔线 if (ck_divider.isChecked()) { Drawable drawable = getResources().getDrawable(R.color.black, getTheme()); lv_planet.setDivider(drawable); // 设置分隔线的高度 lv_planet.setDividerHeight(ImageUtil.dip2px(this, 1)); } else { lv_planet.setDivider(null); lv_planet.setDividerHeight(0); } } else if (compoundButton.getId() == R.id.ck_selector) { if (ck_selector.isChecked()) { // 显示按压背景 lv_planet.setSelector(R.drawable.list_selector); // 设置选择器 } else { Drawable drawable = getResources().getDrawable(R.color.transparent, getTheme()); lv_planet.setSelector(drawable); } } } }布局文件activity_list_view.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".ListViewActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="horizontal"> <CheckBox android:id="@+id/ck_divider" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="start|center" android:text="显示分隔线" android:textSize="17sp"/> <CheckBox android:id="@+id/ck_selector" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="start|center" android:text="显示按压背景" android:textSize="17sp"/> </LinearLayout> <ListView android:id="@+id/lv_planet" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@null" android:dividerHeight="0dp" android:listSelector="@color/transparent" /> </LinearLayout>选择器list_selector.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/orange"/> <item android:drawable="@color/white"/> </selector>颜色资源colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> <color name="orange">#FFFFDD</color> <color name="transparent">#00000000</color> </resources>