Android 开发->控件使用篇

NumberPicker

功能描述:ActivityA跳转至ActivityB,ActivityA中包含NumberPicker,从ActivityB中回到ActivityA中时,需要对NumberPicker重新赋值,结果报错,数组越界,具体错误报错内容如下:

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

原因:在初始化NumberPicker时代码执行顺序是这样的:

numberPicker.displayedValues = contentArray[num]?.toTypedArray()
numberPicker.maxValue = contentArray[num]!!.size-1
numberPicker.value = 0
numberPicker.minValue = 0

此时从ActivityB->ActivityA时,displayValues长度减小,会导致maxValue的值大于displayValues的长度,此时就会报错数组越界。

解决办法:

numberPicker.maxValue = contentArray[num]!!.size-1
numberPicker.displayedValues = contentArray[num]?.toTypedArray()
numberPicker.value = 0
numberPicker.minValue = 0
调换代码的执行顺序,先设置maxValue,就不会出现上述问题。

Spinner->设置下拉框中的内容居中

spinner 在使用过程中,主要是内容无法居中的问题,本来问题好解决,但是被编译器给小坑了一波,在这里记录一下。

这里我是用kotlin 写的

  val arrayAdapter = ArrayAdapter<String>(
            this,
//            R.layout.spinner_textview_center,
            R.layout.support_simple_spinner_dropdown_item,
            spinnerDatas
        )

 一般我们使用的都是这个 R.layout.support_simple_spinner_dropdown_item,下拉样式,这其实是一个TextView。注释掉的那行是我采用的布局,居中比较简单,自己重新写一个布局,然后在引入就可以了。下边先放上我写的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:textColor="#000000"
    android:textSize="18sp"
    android:gravity="center"
    android:id="@android:id/text1"
    style="?attr/spinnerDropDownItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="?attr/dropdownListPreferredItemHeight"
    android:ellipsize="marquee" />

 编译器的坑是,无论我怎么写xml布局,ArrayAdapter重载式中无法识别,布局ID,初次设置居中的我,以为不能改。。。最后重启大法好。重启android studio  最终可以了。

 

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页