Как скрыть один элемент в Android SpinnerAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как скрыть один элемент в Android Spinner

Сообщение Anonymous »

Я ищу способ скрыть один элемент в виджете Spinner Android. Это позволит вам имитировать счетчик без выбранных элементов и гарантирует, что обратный вызов onItemSelected() всегда вызывается для каждого выбранного элемента (если скрытый элемент является «текущим»). Обычно в счетчике всегда есть один элемент, который не генерирует обратный вызов, а именно текущий.

В stackoverflow есть код, позволяющий отключить (серый цвет) элементы, но не способ полностью скрыть элементы, как если бы они не существовали.

После долгих экспериментов я придумал несколько хакерское решение, которое работает на различных старых и новых платформах Android. Есть у него небольшие косметические недостатки, которые сложно заметить. Мне все же хотелось бы услышать о более официальном решении, кроме «не делайте этого со счетчиком».

Это всегда скрывает первый элемент в счетчике, но его довольно легко можно расширить, чтобы скрыть произвольный элемент или несколько элементов. Добавьте фиктивный элемент, содержащий пустую строку, в начале списка элементов счетчика. Возможно, вы захотите установить для текущего выбора счетчика значение 0 до открытия диалогового окна счетчика. Это будет имитировать невыбранный счетчик.

Пример настройки счетчика с переопределением метода ArrayAdapter:

Пример настройки счетчика с переопределением метода ArrayAdapter:

р>

List list = new ArrayList();
list.add(""); // Initial dummy entry
list.add("string1");
list.add("string2");
list.add("string3");

// Populate the spinner using a customized ArrayAdapter that hides the first (dummy) entry
ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
View v = null;

// If this is the initial dummy entry, make it hidden
if (position == 0) {
TextView tv = new TextView(getContext());
tv.setHeight(0);
tv.setVisibility(View.GONE);
v = tv;
}
else {
// Pass convertView as null to prevent reuse of special case views
v = super.getDropDownView(position, null, parent);
}

// Hide scroll bar because it appears sometimes unnecessarily, this does not prevent scrolling
parent.setVerticalScrollBarEnabled(false);
return v;
}
};

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(dataAdapter);


Подробнее здесь: https://stackoverflow.com/questions/986 ... id-spinner
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»