Высота выпадения прядильщика в первый раз - PullRequest
0 голосов
/ 30 августа 2018

Я использовал счетчик, чтобы сделать раскрывающиеся флаги страны. Но высота выпадающего меню не является правильной в первый раз, как показывают изображения, но она исправляется, когда я начинаю прокручивать выпадающий список или закрываю его и открываю снова.

Before pressing

First time

Second time

Я использовал нестандартный адаптер для прядильщика

class CustomAdapter(context: AppCompatActivity, resouceId: Int, val list: List<DirectoryResponse>) : ArrayAdapter<DirectoryResponse>(context, resouceId, list) {

    private var inflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        //TODO : Recycle the view
        val rowItem = getItem(position)

        val rowview = inflater.inflate(R.layout.flag_spinner, parent, false)

        val imageView = rowview.findViewById(R.id.flag_image) as ImageView
        val padding = dpToPx(6).toInt()
        imageView.setPadding(padding, padding, padding, padding)

        val imageSize = dpToPx(36).toInt()
        GlideApp.with(context)
                .load(rowItem.FlagUrl)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .override(imageSize)
                .into(imageView)


        return rowview
    }

    override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup?): View {
        return getView(position, convertView, parent)
    }

}

flag_spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/flag_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="horizontal"
    android:scaleType="fitCenter"
    tools:src="@drawable/ic_flag">

</ImageView>

часть в SignInActivity.kt

val adapter = CustomAdapter(this, R.layout.flag_spinner, it)
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        flag_spinner.adapter = adapter

1 Ответ

0 голосов
/ 30 августа 2018

Поскольку вы не можете легко установить высоту выпадающего меню, я считаю, что она отображается неправильно, поскольку изображение не загружается при первом его открытии.

Попробуйте изменить размер ImageView с wrap_content на фиксированную ширину и высоту. Например:

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/flag_image"
    android:layout_width="24dp"
    android:layout_height="24dp"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="horizontal"
    android:scaleType="fitCenter"
    tools:src="@drawable/ic_flag"/>
...