复杂点的常用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 初始状态或取消所有选择时调用
    }
});
相关推荐
轻闲一号机8 分钟前
【机器学习】机器学习笔记
人工智能·笔记·机器学习
天下琴川43 分钟前
Dify智能体平台源码二次开发笔记(5) - 多租户的SAAS版实现(2)
人工智能·笔记
AD钙奶-lalala1 小时前
某车企面试备忘
android
我爱拉臭臭2 小时前
kotlin音乐app之自定义点击缩放组件Shrink Layout
android·java·kotlin
workworkwork勤劳又勇敢3 小时前
Adversarial Attack对抗攻击--李宏毅机器学习笔记
人工智能·笔记·深度学习·机器学习
匹马夕阳3 小时前
(二十五)安卓开发一个完整的登录页面-支持密码登录和手机验证码登录
android·智能手机
吃饭了呀呀呀3 小时前
🐳 深度解析:Android 下拉选择控件优化方案——NiceSpinner 实践指南
android·java
寻丶幽风4 小时前
论文阅读笔记——Generating Long Sequences with Sparse Transformers
论文阅读·笔记·语言模型·transformer·稀疏自注意力
Angindem4 小时前
websoket 学习笔记
笔记·学习
吃饭了呀呀呀4 小时前
🐳 《Android》 安卓开发教程 - 三级地区联动
android·java·后端