Повторение рейтинга RatingBar в ListView с использованием RelativeLayout - PullRequest
1 голос
/ 15 октября 2010

Вот некоторые xml для строки в ListView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="6dip">
<ImageView android:id="@+id/cover" android:layout_width="64dip"
    android:layout_height="64dip" android:layout_alignParentTop="true"
    android:layout_alignParentBottom="true" android:layout_marginRight="6dip" />
<TextView android:id="@+id/loan" style="@style/DetailsLabel.Small"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_toRightOf="@id/cover" android:layout_alignParentRight="true" />
<TextView android:id="@+id/title" style="@style/DetailsLabel.Small"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_toRightOf="@id/cover" android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" android:layout_above="@id/loan"
    android:layout_alignWithParentIfMissing="true" android:gravity="center_vertical"
    android:singleLine="true" android:ellipsize="end" />
<RatingBar android:id="@+id/ratingBarIndicator" style="?android:attr/ratingBarStyleSmall"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_toRightOf="@id/cover" android:layout_below="@id/title"
    android:layout_alignParentRight="true" android:gravity="center_vertical" />

А вот и результат: alt text

(это простой пончик 1.6).

Я пытаюсь достичь обложки слева, за которой следуют заголовок, строка рейтинга и необязательный статус ссуды справа. Как вы можете видеть, RatingBar повторяется бесконечно (оно должно иметь только пять звезд); и всякий раз, когда установлен статус кредита, название исчезает. Как я могу исправить свой XML для достижения желаемого эффекта?

Ответы [ 2 ]

2 голосов
/ 15 октября 2010

Я бы начал с исправления строки рейтинга следующим образом:

 <RatingBar
            android:id="@+id/ratingBarIndicator"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="?android:attr/ratingBarStyleSmall"
            android:numStars="5"
            android:isIndicator="true" />

Затем выровнял его по правому краю от родителя (опционально с android: layout_centerVertical = "true").После этого поместите свой заголовок справа от обложки и слева от строки рейтинга) И тогда вы можете иметь ярлык ссуды, например, ниже заголовка и справа от обложки.

0 голосов
/ 15 октября 2010

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

Лично для достижения этого макета я бы использовал несколько LinearLayouts вместо RelativeLayout. Я нахожу RelativeLayouts очень запутанным и трудно понять правильно (но это только мое мнение).

Например:

<LinearLayout 
  android:orientation="horizontal" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content">
  <ImageView
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/>
  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
       <TextView android:id="@+id/loan" .../>
       <TextView android:id="@+id/title" .../>
       <RatingBar android:layout_width="wrap_content .../>
  </LinearLayout>
</LinearLayout>

Если вы не хотите, чтобы кредит textView занимал какое-либо место, когда он пуст, вам может потребоваться установить его видимость GONE в getView вашего адаптера ListView. Попробуйте, хотя.

...