复杂点的常用View

复杂点的常用View:Spinner、GridView、ListView、ScrollView、RecyclerView、AdapterView

  1. Spinner(下拉列表框)

    • 常见属性

      • entries :通过在 strings.xml 中定义数组资源,并在此处引用,来设置下拉列表的选项。例如,在 strings.xml 中定义 <string - array name="fruits_array"><item>苹果</item><item>香蕉</item><item>橙子</item></string - array>,在 Spinner 中使用 android:entries="@array/fruits_array"
      • prompt :设置当点击 Spinner 时显示的提示信息,用于告知用户选择的内容类型,如 android:prompt="请选择水果"。此属性在对话框样式的 Spinner 中更有用。
    • 常见事件

      • 选项选择监听 :通过 AdapterView.OnItemSelectedListener 监听用户选择的选项。

kotlin

kotlin 复制代码
val spinner: Spinner = findViewById(R.id.spinner)
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
        val selectedItem = parent.getItemAtPosition(position).toString()
        // 根据选择的选项执行相应逻辑
    }
    override fun onNothingSelected(parent: AdapterView<*>) {
        // 用户未选择任何选项时的逻辑(通常较少使用)
    }
}
  1. GridView(网格视图)

    • 常见属性

      • numColumns :设置网格视图的列数,可以是具体数字(如 android:numColumns="3" 表示 3 列),也可以设置为 auto_fit 让系统根据屏幕宽度自动适配列数。
      • verticalSpacing :设置网格项之间的垂直间距,单位为像素或其他尺寸单位,如 android:verticalSpacing="10dp"
      • horizontalSpacing :设置网格项之间的水平间距,类似 android:horizontalSpacing="10dp"
    • 常见事件

      • 项点击监听 :通过 AdapterView.OnItemClickListener 监听网格项的点击事件。

kotlin

ini 复制代码
val gridView: GridView = findViewById(R.id.grid_view)
gridView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
    // 处理网格项点击逻辑,position 为点击项的位置
}
  1. ListView(列表视图)

    • 常见属性

      • divider :设置列表项之间的分隔线,可以是颜色(如 android:divider="#CCCCCC")或图片资源(如 android:divider="@drawable/divider_line")。
      • dividerHeight :设置分隔线的高度,如 android:dividerHeight="1dp"
    • 常见事件

      • 项点击监听 :使用 AdapterView.OnItemClickListener 监听列表项的点击。

kotlin

ini 复制代码
val listView: ListView = findViewById(R.id.list_view)
listView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
    // 处理列表项点击逻辑,position 为点击项的位置
}
  • 项长按监听 :通过 AdapterView.OnItemLongClickListener 监听列表项的长按事件。

kotlin

arduino 复制代码
listView.onItemLongClickListener = AdapterView.OnItemLongClickListener { parent, view, position, id ->
    // 处理列表项长按逻辑,返回 true 表示事件已处理,不再触发其他长按相关操作
    true
}
  1. ScrollView(滚动视图)

    • 常见属性

      • scrollbars :设置滚动条的显示方式,取值有 none(不显示滚动条)、horizontal(仅显示水平滚动条)、vertical(仅显示垂直滚动条)、both(显示水平和垂直滚动条),例如 android:scrollbars="vertical"
      • fillViewport :设置为 true 时,ScrollView 会尝试填满可用空间,常用于需要自适应屏幕高度的场景,如 android:fillViewport="true"
    • 常见事件

      • 滚动监听 :可以通过自定义一个继承自 ViewTreeObserver.OnScrollChangedListener 的监听器来监听滚动事件。

kotlin

kotlin 复制代码
val scrollView: ScrollView = findViewById(R.id.scroll_view)
scrollView.viewTreeObserver.addOnScrollChangedListener(object : ViewTreeObserver.OnScrollChangedListener {
    override fun onScrollChanged() {
        val scrollY = scrollView.scrollY
        // 根据滚动的 Y 坐标执行相应逻辑,如加载更多数据
    }
})
  1. RecyclerView(回收视图)

    • 常见属性

      • 本身没有太多直接设置外观的属性,主要依赖于 LayoutManagerItemDecoration。例如,通过 LinearLayoutManager 来控制布局方向(垂直或水平)。在代码中设置 RecyclerViewLayoutManager

kotlin

ini 复制代码
val recyclerView: RecyclerView = findViewById(R.id.recycler_view)
val layoutManager = LinearLayoutManager(this)
recyclerView.layoutManager = layoutManager
  • 常见事件

    • 项点击监听 :由于 RecyclerView 没有内置的点击事件监听方法,通常在 ViewHolder 中为项视图设置点击监听器。

kotlin

arduino 复制代码
class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
    init {
        view.setOnClickListener {
            val position = adapterPosition
            if (position!= RecyclerView.NO_POSITION) {
                // 处理项点击逻辑,position 为点击项的位置
            }
        }
    }
}
  1. ScrollView(滚动视图)

AdapterView 是一个抽象类,它是 ListViewGridViewSpinner 等视图类的基类,用于显示由 Adapter 提供的数据。以下是 AdapterView 常见的属性和事件介绍:

属性

  1. android:choiceMode

    • 说明 :用于设置列表项的选择模式。在 ListViewAdapterView 的子类中常用。取值有:

      • none:默认值,不允许选择列表项。
      • singleChoice:只允许单选列表项。
      • multipleChoice:允许多选列表项。
      • multipleChoiceModal:多选模式,并且会显示一个操作栏用于处理选中的项(通常在 Android 3.0 及以上版本使用)。
    • 示例 :在 XML 布局文件中,对于 ListView 可以设置 android:choiceMode="singleChoice"

  2. android:drawSelectorOnTop

    • 说明 :设置为 true 时,选中项的选择器(通常是背景颜色变化等效果)会绘制在列表项内容的上方;设置为 false 时,选择器绘制在内容下方。
    • 示例android:drawSelectorOnTop="false"
  3. android:fastScrollEnabled

    • 说明:控制是否启用快速滚动条。当列表数据较多时,启用此属性可在列表边缘显示一个快速滚动条,方便用户快速定位到指定位置。
    • 示例android:fastScrollEnabled="true"
  4. android:footerDividersEnabled

    • 说明 :用于控制是否在添加到列表底部的页脚视图之间绘制分隔线。通常在使用 addFooterView(View v) 方法添加了页脚视图后起作用。
    • 示例android:footerDividersEnabled="true"
  5. android:headerDividersEnabled

    • 说明 :与 android:footerDividersEnabled 类似,用于控制是否在添加到列表顶部的页眉视图之间绘制分隔线,配合 addHeaderView(View v) 方法使用。
    • 示例android:headerDividersEnabled="true"

事件

  1. OnItemClickListener

    • 说明:当用户点击列表中的某一项时触发该事件。

    • 示例代码

java

java 复制代码
AdapterView<?> adapterView = findViewById(R.id.adapter_view);
adapterView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // parent 是触发点击事件的 AdapterView
        // view 是被点击的列表项视图
        // position 是被点击列表项在 Adapter 中的位置
        // id 是被点击列表项的唯一标识符,通常与 Adapter 中 getItemId(int position) 方法返回值对应
        Object item = parent.getItemAtPosition(position);
        // 在此处理点击后的逻辑,例如根据点击的项进行不同操作
    }
});
  1. OnItemLongClickListener

    • 说明:当用户长按列表中的某一项时触发该事件。

    • 示例代码

java

java 复制代码
adapterView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        // 处理长按逻辑
        // 返回 true 表示事件已处理,不会再触发 OnItemClickListener;返回 false 则反之
        return true;
    }
});
  1. OnItemSelectedListener

    • 说明 :用于监听 AdapterView 中某一项被选中的事件,常用于 Spinner 和处于单选模式下的 ListView 等。

    • 示例代码

java

less 复制代码
adapterView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // 当有项被选中时触发,处理选中后的逻辑
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // 当没有项被选中时触发,通常在 Spinner 初始状态或取消所有选择时调用
    }
});
相关推荐
CYRUS STUDIO12 分钟前
adb 实用命令汇总
android·adb·命令模式·工具
这儿有一堆花33 分钟前
安卓应用卡顿、性能低下的背后原因
android·安卓
byte轻骑兵35 分钟前
【Bluedroid】蓝牙HID DEVICE断开连接流程源码分析
android·c++·蓝牙·hid·bluedroid
Edward Nygma1 小时前
springboot3+vue3融合项目实战-大事件文章管理系统-更新用户密码
android·开发语言·javascript
Alessio Micheli2 小时前
国债收益率、需求与抛售行为的逻辑解析
笔记
梭七y4 小时前
记录学习《手动学习深度学习》这本书的笔记(十一)
笔记·深度学习·学习
投笔丶从戎4 小时前
Kotlin Multiplatform--03:项目实战
android·开发语言·kotlin
居然是阿宋5 小时前
Android Canvas API 详细说明与示例
android
lwewan5 小时前
26考研——中央处理器_数据通路的功能和基本结构(5)
笔记·考研
途中刂6 小时前
第一章 初识Java
java·开发语言·笔记·学习·intellij-idea