Высота первого элемента счетчика не устанавливается на ноль - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу сделать спиннер с подсказкой, следуя одному из решений, я делаю первый элемент высоты выпадающего списка до 0, но он игнорируется, а первый элемент все еще виден и имеет высоту> 0. Код:

        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item) {

            @Override
            public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
                View v =  super.getDropDownView(position, convertView, parent);
                ViewGroup.LayoutParams lp = v.getLayoutParams();
                v.setVisibility(View.VISIBLE);
                if (position == 0) {
                    lp.height = 0; //doesn't affect anything
                } else {
                    lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
                }
                v.setLayoutParams(lp);
                return v;
            }

            @Override
            public boolean isEnabled(int position){
                return position != 0;
            }
        };
        spinnerAdapter.add(getHint());
        spinnerAdapter.addAll(getItems());
        spinnerView.setAdapter(spinnerAdapter);

Когда я пытаюсь установить height = 1, это работает, и элемент почти исчезает, но это не совсем так, как он должен работать. Есть ли причина, почему это могло произойти? Есть ли способы установить высоту точно на ноль?

1 Ответ

0 голосов
/ 30 апреля 2019

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

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        if(convertView == null){
            convertView = flater.inflate(R.layout.list_itemslayout,parent, false);
        }
        RowItem rowItem = getItem(position);
        TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
        txtTitle.setText(rowItem.getTitle());
        ImageView imageView = (ImageView) convertView.findViewById(R.id.icon);
        imageView.setImageResource(rowItem.getImageId());
        return convertView;
    }
...