复杂点的常用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 初始状态或取消所有选择时调用
    }
});
相关推荐
love530love15 分钟前
【PyCharm必会基础】正确移除解释器及虚拟环境(以 Poetry 为例 )
开发语言·ide·windows·笔记·python·pycharm
咕噜企业签名分发-淼淼24 分钟前
如何实现安卓端与苹果端互通的多种方案
android
wu_android1 小时前
Android 线性布局中常见的冲突属性总结
android
普宁彭于晏1 小时前
元素水平垂直居中的方法
前端·css·笔记·css3
恋猫de小郭1 小时前
为什么跨平台框架可以适配鸿蒙,它们的技术原理是什么?
android·前端·flutter
m0_637146932 小时前
计算机网络基础总结:TCP/IP 模型、TCP vs UDP、DNS 查询过程
笔记·tcp/ip·计算机网络
Lester_11012 小时前
嵌入式学习笔记 - freeRTOS vTaskPlaceOnEventList()函数解析
笔记·学习
张风捷特烈2 小时前
每日一题 Flutter#5,6 | 两道 Widget 选择题
android·flutter
移动开发者1号3 小时前
App主界面点击与跳转启动方式区别
android·kotlin
移动开发者1号3 小时前
我用Intent传大图片时竟然崩了,怎么回事啊
android·kotlin