2013-09-21 2 views
0

Я использую simple_list_item_single_choice для своих элементов списка.Android simple_list_item_single_choice задает высоту по умолчанию программно

Вот пример кода

view = mInflater.inflate(android.R.layout.simple_list_item_single_choice, null); 
final CheckedTextView title = (CheckedTextView) view.findViewById(android.R.id.text1); 

Это работает хорошо, но мои ListView элементы не отображаются красиво ... то, что я имею в виду, что высота элементов по высоте точно содержание ... я хочу его быть дополненным, как если бы я использовал simple_list_item1, но мне нужно, чтобы он был с выбором радио.

Как установить эту минимальную минимальную высоту? Он должен быть по умолчанию 48 dip Пробовал установить title.setMinimumHeight(48), но не повезло.

EDIT: Я знаю, что это возможно с пользовательским расположением, но это именно то, чего я пытаюсь избежать.

Спасибо!

ответ

0

Не используйте android.R.layout.simple_list_item_single_choice, создайте свой собственный макет и используйте его. В пользовательском макете вы можете легко установить высоту и ширину.

+0

Да, я знаю, что, но зачем создавать собственный макет, если я только хочу, чтобы показать список с выбором ... и single_choice делает именно то, что я нужно просто хотеть мага предметов немного больше – Majky

0

Мой ответ запаздывает, и, возможно, вы решить эту проблему ... Я решил эту проблему следующим образом:

int getListViewHeight(ListView list) { 
    ListAdapter adapter = list.getAdapter(); 

    list.measure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
    int listviewHeight = list.getMeasuredHeight() * adapter.getCount() + (adapter.getCount() * list.getDividerHeight()); 

    return listviewHeight; 
} 

Использование:

ListView listView = (ListView) findViewById(R.id.yourlistviewId); 
listView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getListViewHeight(listView))); 

элемент управления ListView должен быть в LinearLayout. Если в течение различных раскладок, должны быть изменены, чтобы LinearLayout.LayoutParams

Хорошее кодирование :)

Смежные вопросы