Android - 对齐textViews问题

时间:2016-11-15 12:10:52

标签: android xml android-layout textview android-xml

我正在开发一个Android应用程序。我在同一行中有很多TextView。 但是当TextView变大时,它会转到一个新行,但不会对齐左边。

这就是我需要的:

enter image description here

这就是我现在所拥有的:

enter image description here

我的代码:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp">

 <ImageView
    android:layout_width="10dp"
    android:layout_height="10dp"
    android:layout_gravity="center_vertical"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:src="@drawable/arrow_right" />

 <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/due_after"
     android:textColor="@color/black" />

 <TextView
     android:id="@+id/tv_due_days"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginEnd="3dp"
     android:layout_marginLeft="3dp"
     android:layout_marginRight="3dp"
     android:layout_marginStart="3dp"
     android:text=" 500 days"
     android:textColor="@color/red" />

 <TextView
     android:id="@+id/tv_redemption"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/from_earn_date"
     android:textColor="@color/black" />

</LinearLayout>

3 个答案:

答案 0 :(得分:4)

使用单一文本视图显示数据,如果您希望文本具有不同颜色,请使用SpannableStringBuilder。

示例:

SpannableStringBuilder builder = new SpannableStringBuilder();

String red = "this is red";
SpannableString redSpannable= new SpannableString(red);
redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, red.length(), 0);
builder.append(redSpannable);

String white = "this is white";
SpannableString whiteSpannable= new SpannableString(white);
whiteSpannable.setSpan(new ForegroundColorSpan(Color.WHITE), 0, white.length(), 0);
builder.append(whiteSpannable);

String blue = "this is blue";
SpannableString blueSpannable = new SpannableString(blue);
blueSpannable.setSpan(new ForegroundColorSpan(Color.BLUE), 0, blue.length(), 0);
builder.append(blueSpannable);

mTextView.setText(builder, BufferType.SPANNABLE);

答案 1 :(得分:1)

而不是使用三个textview将其作为单个textview并使用spannable字符串以使500day为红色

示例:

SpannableStringBuilder builder = new SpannableStringBuilder();

String str = "Due date after 500day from earned points date";
SpannableString mutableStr= new SpannableString(str);
redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 15, 21, 0);
builder.append(mutableStr);

答案 2 :(得分:0)

从我可以看到,当您可以使用单个文本视图时,您正在使用两个单独的文本视图。

你可以连接&#34; 500天&#34;进入原始文本视图。

firstTextView.setText(getResources().getString(R.string.STRING_NAME, 500));

只要您的Res&gt; Values&gt; String.xml文件中包含该字符串。

<string name="STRING_NAME">Due date after %1$f from earned points date</string>