Установка исходных изображений в коде скрывает или занимает фоновые цвета кнопок ImageButton.В чем дело? - PullRequest
0 голосов
/ 31 декабря 2018

Если я установлю src в xml, все будет в порядке с цветом фона. Вот что я ожидал получить

При настройке в коде то, что я получил

В файле Kotlin:

fun setImagesToButtons(){
    var index: Int
    for (i in 0..gameFieldGridLayout.childCount - 1){
        index = randomNumber()
        ImgResource.imgIdMap.get(index)?.let { 
            gameFieldGridLayout.getChildAt(i).setBackgroundResource(it)
        }
    }
}

fun randomNumber(): Int {
    return Random().nextInt((6-1) + 1)
}

HashMap с идентификаторами:

class ImgResource {
companion object {
    val imgIdMap: HashMap<Int, Int> = hashMapOf(
        1 to R.drawable.i1,
        2 to R.drawable.i2,
        3 to R.drawable.i3,
        4 to R.drawable.i4,
        5 to R.drawable.i5,
        6 to R.drawable.i6)
    }
}

и xml:

<android.support.v7.widget.GridLayout
        android:layout_height="match_parent"
        app:columnCount="16"
        android:layout_width="match_parent"
        app:rowCount="9"
        android:layout_gravity="center" 
        android:id="@+id/gameFieldGridLayout">

    <ImageButton android:id="@+id/btnCard_1"
                 android:layout_width="0dp"
                 android:layout_height="0dp"
                 android:background="@android:color/background_light"
                 android:adjustViewBounds="true"
                 android:visibility="visible"
                 app:layout_columnWeight="1"
                 app:layout_rowWeight="1" android:paddingBottom="1dp" 
                 android:paddingTop="1dp"
                 android:paddingLeft="3dp" android:paddingRight="3dp" 
                 android:layout_margin="1dp"
                 android:scaleType="centerCrop" 
                 style="@android:style/Widget.DeviceDefault.ImageButton"
                 android:src="@drawable/i1"/>

Пожалуйста, помогите решить эту проблему!PS Извините за мой badddd английский!

1 Ответ

0 голосов
/ 31 декабря 2018

Ваш метод возвращает иногда 0, формула (max - min + 1) + min

fun randomNumber(): Int {
    return Random().nextInt((6-1) + 1) + 1
}
...