2012-01-26 11 views
0

これは、私が使用していレイアウトされています左マージン(Androidアプリ)に右マージンとテキストに画像を合わせるしようとしている

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:background="@color/background" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="30dip" 
> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" > 

    <RelativeLayout 
     android:orientation="horizontal" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:gravity="fill_horizontal" 
     > 

     <TextView android:id="@+id/poi_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" 
      android:layout_alignParentLeft="true" 
     /> 

     <ImageView android:id="@+id/internet" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:src="@drawable/internet" 
      android:adjustViewBounds="true" 
      android:maxHeight="20sp" 
     /> 

    </RelativeLayout> 
    ... 
    </LinearLayout> 
</ScrollView> 

ただし、テキストが左に整列表示されますが、画像が表示されます。テキストと同じ高さで(期待どおり)、水平に画面中央に表示されます。なぜそれは右に揃えられていないのですか? RelativeLayoutandroid:gravityという属性の異なる組み合わせを試してみましたが、成功しませんでした。

画像の属性は「sp」単位で設定されています。これは、画像を付随するテキストに比例させたいからです。あれは正しいですか ?

フィードバックいただきありがとうございます。

UPDATE:私はLinearLayout代わりのRelativeLayoutを使用してこの問題を解決するために管理する@ danh32の答えに

感謝。しかし好奇心の念から、私の例のRelativeLayoutで問題が何か分かっていれば、感謝しています。

答えて

1

スタンドアロンイメージビューの代わりにtextviewのdrawableRight属性を使用してイメージを表示しようとしましたか?あなたは親を満たすようにテキストビューの幅を変更し、drawableRightをインターネットdrawableとして設定することができます。

<TextView android:id="@+id/poi_name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textStyle="bold" 
     android:layout_alignParentLeft="true" 
     android:drawableRight="@drawable/internet" 
    /> 
+0

回答@ danh32ありがとうございました。実際に私はdrawableRight属性を知らなかった。クリックしたときにブラウザを開くために、画像にonClickリスナーを添付する必要があります。あなたが言及した属性を使ってそれを宣言すれば、同じリスナーを画像に付けることは可能ですか? onClickリスナーは、左側のテキストではなく、イメージをクリックするときにのみアクティブにする必要があります。 – Sergio

+1

ああ、drawableRight属性を使用しないでください。ビューレベルでクリックターゲットを指定できるのは、画像を反応させることはできませんが、テキストは反応しません。私が通常この問題を解決する方法は、textviewのwidth = "0dp"とlayout_weight = "1"を設定することです。これにより、テキストビューはレイアウト内の余分なスペースを食い止めることができ、イメージビューを右に押す必要があります。ただし、これはLinearLayoutsでのみ機能します。 RelativeLayoutsではありません。 – danh32

+0

LinearLayoutに変更し、あなたが言うように、テキストビューに属性layout_weight = "1"を追加すると、それは機能します。明らかにwidth = "0dp"は必要ではありませんでした(しかし、あなたは私にその理由を教えてくれました。その場合、その属性を0に設定する必要があります)。 Text/Imageビューのlayout_alignParentLeft = "true"とlayout_alignParentRight = "true"をgravity = "left"とgravity = "right"に置き換えました。 – Sergio

関連する問題