2013-08-29 11 views
11

アンドロイドアプリケーションを開発しようとしていますが、GUIデザインに問題があります。スクリーンショットの次の部分は私の問題です(赤と青の線はAndroidのデバッグオプションによって生成されました)。RelativeLayoutでビューが重複しないようにする

my problem

これはコードです:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/caption" 
    android:layout_below="@+id/caption" > 

    <ImageButton 
     android:id="@+id/button_edit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/content_edit" 
     style="?android:attr/borderlessButtonStyle" /> 

    <TextView 
     android:id="@+id/myText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:text="@string/num_placeholder" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 


</RelativeLayout> 

あなたが見ることができるように、TextViewにMYTEXTはのImageButtonのbutton_editと重なります。 単純な解決策は、RelativeLayoutの代わりにLinearLayoutを使用することです。問題は、次のとおりです。

  1. は私が(明らかに編集ボタンの左に)レイアウトの残りの部分を埋めるために、テキストを必要とする右
  2. 上の編集ボタンを必要とする

IもmyTextのlayout_widthを 'fill_parent'に設定しようとしましたが、編集ボタンの左にある画面全体を塗りつぶしました。

予想される動作(2ラインのTextViewになる)の代わりに、「button_edit」

は誰も私を助けることができると重なっその高さを高めるためにMYTEXTことでしょうか?おかげ

+0

「LinearLayout」でこれを達成するには、なぜ「RelativeLayout」を使用しますか? – sriramramani

答えて

19

のTextViewのレイアウトで使用layout_toLeftOf

このような:

<RelativeLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_alignLeft="@+id/caption" 
android:layout_below="@+id/caption" > 

<ImageButton 
    android:id="@+id/button_edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_alignParentRight="true" 
    android:src="@drawable/content_edit" 
    style="?android:attr/borderlessButtonStyle" /> 

<TextView 
    android:id="@+id/myText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:text="@string/num_placeholder" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:layout_toLeftOf="@+id/button_edit" /> 

+0

ありがとう!それは完全に動作します! – Gnufabio

+0

動的に作成するビューでそれを実現したい場合はどうすればよいですか? –

0

行うための別の方法は、Androidを使用することです:layout_toEndOf属性

<ImageButton 
    android:id="@+id/button_edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_alignParentRight="true" 
    android:src="@drawable/content_edit" 
    style="?android:attr/borderlessButtonStyle" 
    android:layout_toEndOf="@+id/myText" /> 

<TextView 
    android:id="@+id/myText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:text="@string/num_placeholder" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

関連する問題