Выровнять строку рейтинга по правому краю

#android #listview #alignment

#Android #просмотр списка #выравнивание

Вопрос:

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

Моя строка списка определяется следующим образом:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<ImageView  
    android:id="@ id/picture"
    android:layout_width="64px"
    android:layout_height="64px"
    android:paddingLeft="3px"
    ></ImageView>
<TextView 
    android:id="@ id/drinkName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:textSize="25px">
    </TextView>
<RatingBar
    android:id="@ id/rating"
    android:layout_gravity="right"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="?android:attr/ratingBarStyleSmall">
    </RatingBar>
</LinearLayout>
  

Есть идеи?

Заранее спасибо, Роланд

Ответ №1:

Три небольших изменения:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
<ImageView  
    android:id="@ id/picture"
    android:layout_width="64px"
    android:layout_height="64px"
    android:paddingLeft="3px"
    ></ImageView>
<TextView 
    android:id="@ id/drinkName" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textSize="25px">
    </TextView>
<RatingBar
    android:id="@ id/rating"
    android:layout_gravity="right"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="?android:attr/ratingBarStyleSmall">
    </RatingBar>
</LinearLayout>
  

Ответ №2:

Вы могли бы использовать RelativeLayout … например:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<ImageView  
    android:id="@ id/picture"
    android:layout_width="64px"
    android:layout_height="64px"
    android:paddingLeft="3px"
></ImageView>
<TextView 
android:id="@ id/drinkName" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:textSize="25px">
</TextView>
<RelativeLayout android:layout_width="wrap_content" android:id="@ id/relativeLayout1" android:layout_height="match_parent">
    <RatingBar android:layout_width="wrap_content" android:id="@ id/rating" android:layout_height="wrap_content" style="?android:attr/ratingBarStyleSmall" android:layout_alignParentRight="true"></RatingBar>
</RelativeLayout>
</LinearLayout>
  

Ответ №3:

Вы пробовали gravity -атрибут? Кроме того, вы не должны использовать значения пикселей. Из-за этого ваш макет будет плохо выглядеть на устройствах с другим разрешением экрана.