如何在Android中居中显示评分条

3

我按照Stack Overflow上的教程创建了一个自定义的评分栏,它看起来很棒,但问题在于图像的居中。这是我的代码:

enter image description here

可以看到TextView在LinearLayout中垂直居中,但评分栏却在顶部。这是这个图像的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:foregroundGravity="center" >

    <LinearLayout
        android:layout_width="320dp"
        android:layout_height="match_parent"
        android:gravity="center" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <RatingBar
            android:id="@+id/ratingBar1"
            style="@style/starsRatingBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:numStars="5"
            android:rating="2.3"
            android:stepSize="1" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:src="@drawable/ic_launcher" />

    </LinearLayout>

</ScrollView>

以下是样式代码:

<style name="starsRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/star_ratingbar_full</item>
        <item name="android:minHeight">36dip</item>
        <item name="android:maxHeight">36dip</item>
    </style>

任何有关评分条的想法都将受到赞赏!谢谢。

你尝试过使用 center_vertical 吗? - Neil Townsend
是的,它没有帮助。 - vlio20
我认为您还需要将layout_height设置为match_parent,这样它就有了完整的高度来处理重力。 - Neil Townsend
仍然没有任何东西,也许是starsRatingBar的自定义样式中的某些问题。 - vlio20
仍然没有任何东西...非常奇怪。 - vlio20
显示剩余5条评论
2个回答

4

好的,我想我明白了。

关键问题在于ScrollView:它会自动使事物紧凑,除非您明确告诉它不这样做。在滚动视图中,设置:

android:fillViewport="true"

让它利用现有空间。


0

要将所有项目置于顶部,您需要放置:

<TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:text="TextView" />

改为:

  <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

如果你只想让评分栏居中: 只需删除 style="@style/starsRatingBar"。
编辑: 忘记我之前说的任何事情,当我将样式更改为以下内容时,它似乎运行得更好:(调整您的最小/最大高度以获得“完美结果”)
<style name="starsRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@android:drawable/star_on</item>
        <item name="android:minHeight">26dip</item>
        <item name="android:maxHeight">26dip</item>
    </style>

但是 style="@style/starsRatingBar" 是我的评分栏自定义样式。问题是:如何垂直居中评分栏。 - vlio20
请问您能否发布一下您的“starsRatingBar”样式? - Simo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接