2011-01-17 16 views
4

だから、TableLayoutを使用してAndroid 1.6アクティビティを取得しました。行の1つはでRatingBarを持っているこの私のxmlです:。TextViewと同じTableRowでAndroidのRatingBarが正しく表示されない

<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

RatingBarがあるので、私は、「格付け」のTextViewを取る場合独自のテーブル行に、予想通りRatingBarが5可能つ星のうち4を示す、表示されます。それはTextViewのと同じ行にRatingBarを持つことが可能かどう

alt text

誰がどんな考えを持っていますか?あるいは、このレイアウトを考え直す必要がありますか?

編集:私は長いテキスト文字列を表示するテーブルの別の行が問題の原因だと思います。上記の例で '長い文字列'の行がない場合、RatingBarは 'rating'テキストと同じ行に正しく表示されます。

+0

これは、ルートビューとしてTableLayoutを使用し、FILL_PARENTに設定した1.6エミュレータで私にとってうまく動作します。 –

+0

ああ。私はそれが問題を引き起こしているテーブルの別の行であることに気づいた。もう一方の行には長​​いテキスト文字列が含まれています。この文字列は、表のセルのサイズを押して評価バーが正しく表示されないように見えます。これを実証するためにコードスニペットを修正します。 –

答えて

2

固定!

「長い文字列」列に最大幅を設定するだけで済みました。

<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はそのスペースが表のセルに制限されている必要があり推測する - それは別のコンポーネントによってあまりにも多くの部屋を与えられた場合、それは予想外の結果と、それを埋めるために拡大していきます。

+0

これは実際の理由です。 –

2

私は星の評価多分サイズ変更はのTableRowは(その隣接テーブルの行との関係で)その親に合わせて自動的に拡大している方法によるものであることが理由だと思います

あなたの質問に示されていませんあなたのTableLayout要素を削除する必要があります。

TableLayoutには、縮小と伸縮の列要素を指定できます。縮小または拡大する列インデックスを一覧表示します。最初の列は、あなたがリストされたプロパティとあなたのために働く何かを動作するようにこれらを試してそのおそらく簡単に両方を持っている必要はありませんインデックス0

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

ています。列を引き伸ばすと、親に合わせて伸びると思います。この場合、列が消えてしまうことがあります。

私は、2番目の列を星内の格付けで縮小したいと思っています。

希望に役立ちます。

+0

もちろん、あなたの問題は評価コンポーネントのバグかもしれません。 – Emile

+0

笑! OK、ありがとう、これを試してみると、それが動作するかどうかを確認します... –

+0

はbtwを動作させることができませんでした.2番目の列を縮小してみましたが、列を伸ばしたり縮めたりするすべての組み合わせで遊んでいましたが、問題は続くでしょう:( –

関連する問題