RatingBar отображается неправильно в Android, когда на том же TableRow, что и TextView

Итак, у меня есть активность Android 1.6 с помощью TableLayout. В одной из строк есть RatingBar. Это мой xml:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <TextView android:text="name" android:padding="3dip"/> <TextView android:text="@+id/name" android:padding="3dip"/> </TableRow> <TableRow> <TextView android:text="tags" android:padding="3dip"/> <TextView android:id="@+id/tags" android:padding="3dip"/> </TableRow> <TableRow> <TextView android:text="rating" android:layout_width="wrap_content"/> <RatingBar android:id="@+id/rating" style="?android:attr/ratingBarStyleIndicator" android:layout_width="wrap_content" android:rating="4" android:numStars="5"/> </TableRow> <TableRow> <TextView android:text="long string" android:padding="3dip"/> <TextView android:text="this is a very very very long string" android:padding="3dip"/> </TableRow> ... </TableLayout> 

Я хотел бы поместить текстовую метку слева от строки таблицы, а затем иметь 5-звездочный рейтинг справа. Но когда я это делаю, значение рейтинга отображается неправильно, и у меня много ложных пустых звезд выше указанного максимума 5:

Alt text

Если я выберу «рейтинг» TextView, так что RatingBar находится в собственной таблице строк, RatingBar отображает как ожидалось, показывая 4 из 5 возможных звезд:

Alt text

Кто-нибудь знает, возможно ли иметь RatingBar в той же строке, что и TextView? Или мне нужно переосмыслить этот макет?

Отредактировано для добавления: Я думаю, что другая проблема в таблице, которая отображает длинную текстовую строку, вызывает проблему. Без строки «длинной строки» в приведенном выше примере RatingBar отображается правильно в той же строке, что и текст «рейтинг».

Я думаю, что причина, по которой рейтинг звезды может меняться, объясняется тем, что TableRow автоматически расширяется, чтобы соответствовать его родительскому (по отношению к соседним строкам таблицы)

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

В TableLayout вы можете указать элементы усадки и растягивания столбцов. Вы указываете индекс столбца, который хотите сжать или развернуть. Первый столбец – индекс 0.

 <TableLayout android:shrinkColumns="1,0" android:stretchColumns="0,1"></TableLayout> 

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

Я думаю, вы захотите сжать вторую колонку со своим звездным рейтингом внутри нее.

Надеюсь, это поможет.

починил это!

Мне просто нужно было установить максимальную ширину в столбце «длинная строка», т. Е.

 <TableRow> <TextView android:text="long string" android:padding="3dip"/> <TextView android:text="this is a very very very long string" android:layout_width="wrap_content" android:maxWidth="100dip" android:padding="3dip"/> </TableRow> 

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

Intereting Posts
Активность по умолчанию не найдена в Android Studio Какая связь существует между innerRadiusRatio и толщинойRatio класса GradientDrawable? Улучшение синтаксического анализа Java / Kotlin JSON Fatal Exception: java.lang.SecurityException: Отсутствует разрешение на вставку значков Какие шаблоны проектирования я должен изучить перед запуском Android Development Удаление старых папок AndroidStudio Cache – OSX Как обрабатывать клики с элементами для просмотра ресайклеров с помощью RxJava Постоянное обновление текущего уведомления Phonegap – Сохранить изображение с URL-адреса в галерее устройств Почему overScrollBy () и onOverScrolled () не работают с RecyclerView Эффективность Android: импорт статических методов или импорт класса Задача Android Gradle: connectedInstrumentTest для выпуска сборки? Надутый вид не захватывает событие onClick Служба не создается (или подключается) после bindService () Как определить Android-телефон или планшет в jquery?