[英]Android - Placeholder for dynamically added TextView
在我的应用程序中,我有一个内部Relativelayout,左侧有2个Imagebutton(后退按钮和帮助按钮),右侧有2个Imagebutton(前进按钮和信息按钮),以及一个Textview。
问题在于,用户进行测验时会动态设置文本。 有2种可能的文字(请参见图片)。
如您所见,错误答案的文本是此Textview的最大字符长度。 我的目标是为图像按钮定位一个固定的位置。 但是我不想为Texview设置固定宽度。 我认为有更好的解决方案。
实现此目标的最佳方法是什么?
编辑:
这是我内在的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>
将layout_toRightOf
, layout_toLeftOf
设置为TextView。 并从ImageView中删除android:layout_toEndOf="@+id/tv_resultmessage"
等。
像这样:
<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>
试试这个。
<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" />
使用LinearLayout作为父级而不是RelativeLayout可以实现相同的效果。 对于中间的TextView,只需将layout_weight设置为1即可。 对于其余组件,请不要指定任何重量,并且可以根据需要提供适当的边距。 这样,无论文本长度如何,TextView都将保持相同的宽度。 与使用RelativeLayout相比,此方法更具可读性,并且具有较少的xml标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.