繁体   English   中英

Android-动态添加TextView的占位符

[英]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_toRightOflayout_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM