Как обернуть текст, используя simple_list_item_multiple_choice? - PullRequest
4 голосов
/ 03 июня 2011

Я использую SimpleCursorAdapter для отображения одного CheckedTextView.Я знаю, что лучше всего это сделать, используя simple_list_item_multiple_choice и android.R.id.text1.

adapter = new SimpleCursorAdapter(getApplicationContext(), 
              android.R.layout.simple_list_item_multiple_choice, rules, 
              new String[]{Constants.KEY_RULE}, new int[]{android.R.id.text1});

Если текст из KEY_RULE содержит более двух строк, Android не переносится, а скрывает егоЕсть ли простой способ обойти это без необходимости внедрения собственного адаптера?

Найдите мой код xml ниже:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <TextView android:id="@+id/header" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/rule_selection_for_revision_list_title"
        android:padding="4dip" android:background="#000000" android:textColor="#ffffff" android:textStyle="bold" />

  <ListView
    android:id="@android:id/list"
     android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_weight="1.0" />

    <TextView android:textSize="18sp" android:textStyle="bold"
        android:id="@id/android:empty" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:gravity="center_vertical|center_horizontal"
        android:text="There are no rules to consider." />

</LinearLayout>

Есть ли способ, по крайней мере, уменьшить размер шрифтачтобы он подходил к двум строчкам?

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

Есть несколько вариантов.

Вы можете определить свой собственный макет для элемента в списке.Это позволяет полностью настроить пользовательский интерфейс вашего предмета.Более подробную информацию можно найти в Руководстве по просмотру списка .

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

class MySimpleCursorAdapter extends SimpleCursorAdapter
{
    public MySimpleCursorAdapter(Context ctx, int layout, 
                                 Cursor cursor, String [] from, int [] to)
    {
        super(ctx, layout, cursor, from, to);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        View view = super.getView(position, convertView, parent);

        TextView textView = (TextView)view.findViewById(android.R.id.text1);

        //You can increase number of lines in the text view
        textView.setMaxLines(5);

        LayoutParams params = textView.getLayoutParams();
        if(params.height > 0)
        {
            int height = params.height;
            params.height = LayoutParams.WRAP_CONTENT;                              
            textView.setLayoutParams(params);
            textView.setMinHeight(height);
        }

        //Or you can make your font smaller
        textView.setTextSize(customTextSize);

        //or whatever you like, even apply new custom style
        //...

        return view;
    }   

}

Вероятно, вам следует выбрать первый подход (пользовательский макет), но иногда возможен и второй подход.

0 голосов
/ 03 июня 2011

Вам не нужно реализовывать пользовательский адаптер.Просто определите пользовательский макет для элементов списка и передайте его адаптеру вместо android.R.layout.simple_list_item_multiple_choice.

Вы можете искать источники Android (поставляются с SDK на вашем компьютере), чтобы узнать, как выглядит оригинальный макет simple_list_item_multiple_choice, и адаптировать его под свои потребности.

...