Android - 动态添加TextView的占位符

时间:2016-08-26 17:48:27

标签: android android-layout textview android-relativelayout

在我的应用程序中,我有一个内部Relativelayout,左侧有2个图像按钮(后退按钮和帮助按钮),右侧有2个图像按钮(前进按钮和信息按钮)和Textview。

Relativelayout with its elements

问题是当用户进行测验时,动态设置文本。有2种可能的文本(见图像)。

Text for correct answer

Text for wrong answer

如您所见,错误答案的文字是此Textview的最大字符长度。我的目标是为Imagebuttons进行修复定位。 但我不想为Texview设置固定宽度。我认为有更好的解决方案。

实现这一目标的最佳方法是什么?

编辑:

这是我的内心相对布局:

tryCatch({
           # this is the test (just run the call in question)
           polr(a, data=rData, Hess=TRUE)
         }, warning = function(w) {
            # this is how tryCatch handles a stop event
            message("Model doesn't fit") # message to console
            modelFail <<- TRUE # set a variable to test                 
         }, error = function(e) {
            # this is tryCatch handing an error event
            message("error!")
         }, finally = {
            # this is what to do in the event of an.. event
            # I'm not using this approach
         })

if(exists("modelFail")){
  cat("DON'T PANIC! The model fit failed, moving on...")
  rm(modelFail) # I clear the flag to reuse in case of another failure in loop
  return()
} else {
    # now it is safe to run the fit as we have handled an error above                  
    m <- polr(a, data=rData, Hess=TRUE) # build model
}

3 个答案:

答案 0 :(得分:1)

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>

答案 1 :(得分:0)

试试这个。

auto debug = a.m()

答案 2 :(得分:0)

您可以使用LinearLayout作为父级而不是RelativeLayout来实现相同的功能。只需将 layout_weight 设为1,即中间的TextView。对于其余组件,不指定任何重量,如果需要,您可以给出适当的余量。这样,无论文本长度如何,TextView都将保持相同的宽度。与使用RelativeLayout相比,这种方法更具可读性,并且xml标签更少。