0

私のアプリケーションでは、左側に2つのイメージボタン(戻るボタンとヘルプボタン)、右側に2つのイメージボタン(前方ボタンと情報ボタン)とTextviewを持つ内部Relativelayoutがあります。Android - 動的に追加されるプレースホルダ

Relativelayout with its elements

問題は、ユーザーがクイズを作るときにテキストを動的にsettedされていることです。可能なテキストは2つあります(画像を参照)。

Text for correct answer

Text for wrong answer

あなたは間違った答えのためのテキストを見てのとおり、このTextViewのための最大文字長です。私の目標は、Imageボタンの位置を固定することです。 しかし、私はTexviewの修正幅を設定したくありません。私はもっ​​と良い解決策があると思う。

これを達成する最も良い方法は何ですか?

EDIT:

これは私のインナーRelativelayoutです:

<RelativeLayout 
    android:id="@+id/layout_progressbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_marginTop="20dp" 
    android:layout_toEndOf="@+id/iv_image" 
    android:layout_toRightOf="@+id/iv_image" 
    android:gravity="bottom" 
    android:orientation="horizontal" > 

    <ImageButton 
     android:id="@+id/bt_next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:enabled="false" 
     android:src="@drawable/ic_arrow_right" 
     android:text="@string/bt_next" /> 

    <ImageButton 
     android:id="@+id/bt_info" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toEndOf="@+id/tv_resultmessage" 
     android:layout_toLeftOf="@+id/bt_next" 
     android:layout_toRightOf="@+id/tv_resultmessage" 
     android:layout_toStartOf="@+id/bt_next" 
     android:background="@null" 
     android:src="@drawable/ic_info" /> 

    <TextView 
     android:id="@+id/tv_resultmessage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" /> 

    <ImageButton 
     android:id="@+id/bt_praxis" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toEndOf="@+id/bt_back" 
     android:layout_toLeftOf="@+id/tv_resultmessage" 
     android:layout_toRightOf="@+id/bt_back" 
     android:layout_toStartOf="@+id/tv_resultmessage" 
     android:background="@null" 
     android:src="@drawable/ic_praxis" /> 

    <ImageButton 
     android:id="@+id/bt_back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:src="@drawable/ic_arrow_left" 
     android:text="@string/bt_back" /> 

    <ProgressBar 
     android:id="@+id/pb_quiz" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/bt_back" 
     android:padding="5dp" 
     android:progress="1" /> 
</RelativeLayout> 
+0

レイアウトxmlを投稿できますか? – nshmura

答えて

1

設定layout_toRightOflayout_toLeftOfのTextViewへ。 ImageViewからandroid:layout_toEndOf="@+id/tv_resultmessage"などを削除します。

このような

:あなたが代わりにRelativeLayoutの親としてのLinearLayoutと同じことを達成することができ

<RelativeLayout 
     android:id="@+id/layout_progressbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_marginTop="20dp" 
     android:layout_toEndOf="@+id/iv_image" 
     android:layout_toRightOf="@+id/iv_image" 
     android:gravity="bottom" 
     android:orientation="horizontal"> 

    <ImageButton 
      android:id="@+id/bt_next" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:enabled="false" 
      android:src="@drawable/ic_arrow_right" 
      android:text="@string/bt_next"/> 

    <ImageButton 
      android:id="@+id/bt_info" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/bt_next" 
      android:layout_toStartOf="@+id/bt_next" 
      android:layout_marginRight="16dp" 
      android:background="@null" 
      android:src="@drawable/ic_info"/> 

    <TextView 
      android:id="@+id/tv_resultmessage" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/bt_praxis" 
      android:layout_toLeftOf="@+id/bt_info" 
      android:layout_centerHorizontal="true"/> 

    <ImageButton 
      android:id="@+id/bt_praxis" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toEndOf="@+id/bt_back" 
      android:layout_toRightOf="@+id/bt_back" 
      android:layout_marginLeft="16dp" 
      android:background="@null" 
      android:src="@drawable/ic_praxis"/> 

    <ImageButton 
      android:id="@+id/bt_back" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:src="@drawable/ic_arrow_left" 
      android:text="@string/bt_back"/> 

    <ProgressBar 
      android:id="@+id/pb_quiz" 
      style="?android:attr/progressBarStyleHorizontal" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/bt_back" 
      android:padding="5dp" 
      android:progress="1"/> 
</RelativeLayout> 
+0

ありがとうございます。しかし、マージンのために16dpのような修正値で作業すると便利ですか? –

+0

私もそうだと思います。固定マージンが必要です。 – nshmura

0

はこの1つを試してみてください。

<ImageButton 
    android:id="@+id/bt_next" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:enabled="false" 
    android:src="@drawable/ic_arrow_right" 
    android:text="@string/bt_next" /> 

<ImageButton 
    android:id="@+id/bt_info" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@+id/bt_next" 
    android:layout_toStartOf="@+id/bt_next" 
    android:layout_marginEnd = "8dp" 
    android:background="@null" 
    android:src="@drawable/ic_info" /> 

<TextView 
    android:id="@+id/tv_resultmessage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" /> 

<ImageButton 
    android:id="@+id/bt_praxis" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toEndOf="@+id/bt_back" 
    android:layout_toRightOf="@+id/bt_back" 
    android:layout_marginStart = "8dp" 
    android:background="@null" 
    android:src="@drawable/ic_praxis" /> 

<ImageButton 
    android:id="@+id/bt_back" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:src="@drawable/ic_arrow_left" 
    android:text="@string/bt_back" /> 

<ProgressBar 
    android:id="@+id/pb_quiz" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/bt_back" 
    android:padding="5dp" 
    android:progress="1" /> 

0

。真ん中のTextViewの場合、layout_weightに1を付けてください。残りのコンポーネントについては、ウェイトを指定せず、必要に応じて適切なマージンを与えることができます。これにより、TextViewはテキストの長さにかかわらず同じ幅を保ちます。このアプローチは、RelativeLayoutを使用するよりも読みやすくなり、XMLタグが少なくなります。

関連する問題