我有一个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只有半满。我希望图像立即在文本的右侧。
有没有人有任何其他建议我可以尝试实现这一目标?
答案 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,因此这对我有用。