2016-11-15 5 views
0

Я разрабатываю приложение для Android. И у меня много TextViews в одной строке. Но когда TextView стал больше, он переходит к новой строке, но не выравнивается влево.Android - выровнять текстПросмотр вопроса

Это то, что мне нужно:

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> 

ответ

4

Используйте Single TextView для показать данные, и если вы хотите, чтобы тексты были разные цвета используют 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

Вместо того, чтобы три TextViews сделать его как единый 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); 
0

Из того, что Я вижу, что вы используете два отдельных текстовых представления, когда можете использовать одно текстовое представление.

Вы можете связать «500 дней» с исходным текстом.

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

Пока у вас есть строка в файле Res> Values> String.xml.

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