如何在FrameLayout包装器中的文本右侧立即添加图像,该包装器包含两个动态大小的TextView之一?

时间:2013-10-15 00:34:31

标签: java android xml android-layout textview

我有一个FrameLayout,它是TextView的包装器。 TextView可以是具有动态修改文本的两个TextView对象之一。我想立即在FrameLayout中包含的文本的右侧添加一个图像。我尝试了两件事:

我在RelativeLayout中设置了FrameLayout。我添加了一个ImageView:

<RelativeLayout>
<!-- Two TextViews Here -->
<FrameLayout
  android:id="@+id/my_frame_layout"
  android:layout_width="match_parent"
  ...
/>
<ImageView
  android:id="@+id/my_image_view"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_toRightOf="@id/my_frame_layout"
  />
</RelativeLayout>

第一次加载布局时这是有效的。但是,当FrameLayout中包含的文本发生更改时,图像将保持其原始计算的位置,而不是重新计算以保持在TextView的右侧。

所以我尝试将它设为drawable并在代码中设置它。我获取了FrameLayout中保存的TextView,并调用:

setCompoundDrawablesWithIntrinsicBounds(0,0,myDrawable,0)

这很好用,除了drawable始终是FrameLayout的最右边点,尽管TextView只有半满。我希望图像立即在文本的右侧。

有没有人有任何其他建议我可以尝试实现这一目标?

1 个答案:

答案 0 :(得分:0)

我最终将ImageView包装在另一个LinearLayout中,如下所示:

<LinearLayout
  android:id="@+id/my_image_wrapper"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_toRightOf="my_frame_layout"
  android:gravity="left|center_vertical"
  >
  <ImageView
    android:id="@+id/my_image_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
  />
</LinearLayout>

与单独的ImageView不同,当文本更改大小时,会重绘LinearLayout,因此这对我有用。