Выбор центра Android ListView
У меня есть ListView, который показывает соответствие ближайшего слова поиску.
Например, если я ищу "привет", я получаю следующие результаты в ListView
...
привет
привет пять
привет-пять
высокая
выделить
....
Я использую
ListView.setSelection(wordList.indexOf(searchWord));
ListView.setSelected(true);
Приведенный выше код помещает выбранное слово "hi" вверху и не выделяет выделение.
Я хочу, чтобы "hi" был расположен по центру, выбран и выделен автоматически.
См. Ниже
...
привет
привет там
привет
привет-пять
привет пять
...
Какой код можно использовать для достижения вышеуказанного?
Большое спасибо.
Ответы
Ответ 1
ListView view = (ListView)findViewById(R.id.YourListView);
int height = view.getHeight();
int itemHeight = view.getChildAt(0).getHeight();
view.setSelectionFromTop(position, height/2 - itemHeight/2);
Позиция (int) - это список, который вы хотите центрировать в списке!
Ответ 2
попробуйте setSelectionFromTop()
, вам придется самому заниматься математикой. setSelection() приведет выбранный элемент к вершине представления, что вы видите.
Ответ 3
попробуйте это.
во-первых, получить видимое количество элементов списка.
int count=0;
for (int i = 0; i <= listview.getLastVisiblePosition(); i++)
{
if (listview.getChildAt(i)!= null)
{
count++;
}
}
второй, прокрутите элемент до центра списка.
int target = position-count/2;
if (target<0) target = 0;
listview.setSelection(target);
Ответ 4
Попробуйте следующее:
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
для получения дополнительной информации:
http://developer.android.com/resources/tutorials/views/hello-listview.html