复杂点的常用View:Spinner、GridView、ListView、ScrollView、RecyclerView、AdapterView
- 
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中更有用。 
 - entries :通过在 
 - 
常见事件:
- 选项选择监听 :通过 
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<*>) {
        // 用户未选择任何选项时的逻辑(通常较少使用)
    }
}
        - 
GridView(网格视图)
- 
常见属性:
- numColumns :设置网格视图的列数,可以是具体数字(如 
android:numColumns="3"表示 3 列),也可以设置为auto_fit让系统根据屏幕宽度自动适配列数。 - verticalSpacing :设置网格项之间的垂直间距,单位为像素或其他尺寸单位,如 
android:verticalSpacing="10dp"。 - horizontalSpacing :设置网格项之间的水平间距,类似 
android:horizontalSpacing="10dp"。 
 - numColumns :设置网格视图的列数,可以是具体数字(如 
 - 
常见事件:
- 项点击监听 :通过 
AdapterView.OnItemClickListener监听网格项的点击事件。 
 - 项点击监听 :通过 
 
 - 
 
kotlin
            
            
              ini
              
              
            
          
          val gridView: GridView = findViewById(R.id.grid_view)
gridView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
    // 处理网格项点击逻辑,position 为点击项的位置
}
        - 
ListView(列表视图)
- 
常见属性:
- divider :设置列表项之间的分隔线,可以是颜色(如 
android:divider="#CCCCCC")或图片资源(如android:divider="@drawable/divider_line")。 - dividerHeight :设置分隔线的高度,如 
android:dividerHeight="1dp"。 
 - divider :设置列表项之间的分隔线,可以是颜色(如 
 - 
常见事件:
- 项点击监听 :使用 
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
}
        - 
ScrollView(滚动视图)
- 
常见属性:
- scrollbars :设置滚动条的显示方式,取值有 
none(不显示滚动条)、horizontal(仅显示水平滚动条)、vertical(仅显示垂直滚动条)、both(显示水平和垂直滚动条),例如android:scrollbars="vertical"。 - fillViewport :设置为 
true时,ScrollView会尝试填满可用空间,常用于需要自适应屏幕高度的场景,如android:fillViewport="true"。 
 - scrollbars :设置滚动条的显示方式,取值有 
 - 
常见事件:
- 滚动监听 :可以通过自定义一个继承自 
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 坐标执行相应逻辑,如加载更多数据
    }
})
        - 
RecyclerView(回收视图)
- 
常见属性:
- 本身没有太多直接设置外观的属性,主要依赖于 
LayoutManager和ItemDecoration。例如,通过LinearLayoutManager来控制布局方向(垂直或水平)。在代码中设置RecyclerView的LayoutManager: 
 - 本身没有太多直接设置外观的属性,主要依赖于 
 
 - 
 
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 为点击项的位置
            }
        }
    }
}
        - ScrollView(滚动视图)
 
AdapterView 是一个抽象类,它是 ListView、GridView、Spinner 等视图类的基类,用于显示由 Adapter 提供的数据。以下是 AdapterView 常见的属性和事件介绍:
属性
- 
android:choiceMode
- 
说明 :用于设置列表项的选择模式。在
ListView等AdapterView的子类中常用。取值有:none:默认值,不允许选择列表项。singleChoice:只允许单选列表项。multipleChoice:允许多选列表项。multipleChoiceModal:多选模式,并且会显示一个操作栏用于处理选中的项(通常在 Android 3.0 及以上版本使用)。
 - 
示例 :在 XML 布局文件中,对于
ListView可以设置android:choiceMode="singleChoice"。 
 - 
 - 
android:drawSelectorOnTop
- 说明 :设置为 
true时,选中项的选择器(通常是背景颜色变化等效果)会绘制在列表项内容的上方;设置为false时,选择器绘制在内容下方。 - 示例 :
android:drawSelectorOnTop="false" 
 - 说明 :设置为 
 - 
android:fastScrollEnabled
- 说明:控制是否启用快速滚动条。当列表数据较多时,启用此属性可在列表边缘显示一个快速滚动条,方便用户快速定位到指定位置。
 - 示例 :
android:fastScrollEnabled="true" 
 - 
android:footerDividersEnabled
- 说明 :用于控制是否在添加到列表底部的页脚视图之间绘制分隔线。通常在使用 
addFooterView(View v)方法添加了页脚视图后起作用。 - 示例 :
android:footerDividersEnabled="true" 
 - 说明 :用于控制是否在添加到列表底部的页脚视图之间绘制分隔线。通常在使用 
 - 
android:headerDividersEnabled
- 说明 :与 
android:footerDividersEnabled类似,用于控制是否在添加到列表顶部的页眉视图之间绘制分隔线,配合addHeaderView(View v)方法使用。 - 示例 :
android:headerDividersEnabled="true" 
 - 说明 :与 
 
事件
- 
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);
        // 在此处理点击后的逻辑,例如根据点击的项进行不同操作
    }
});
        - 
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;
    }
});
        - 
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 初始状态或取消所有选择时调用
    }
});