Textview текст не отображается должным образом



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



Я хочу отобразить некоторое конкретное значение над каждым баром.



Если значение находится в пределах 4 цифр, оно отображается правильно, но как только 5 цифр нет. приходит, текст заворачивается, как показано на скриншоте ниже.



Я уже пробовал android:singleLine="true", но это ничего не меняет. что-нибудь.



снимок экрана



Расположение:



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<SeekBar
android:id="@+id/seekBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:maxHeight="9dp"
android:minHeight="9dp"
android:padding="10dp"
android:max="100"
android:progressDrawable="@drawable/seekbar_progress"
android:thumb="@drawable/shine_btn" />

<TextView
android:id="@+id/tvValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/seekBar"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="30dp" />

<LinearLayout
android:id="@+id/Graph01"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_below="@id/seekBar"
android:layout_marginTop="50dp"
android:gravity="bottom"
android:orientation="vertical"
android:weightSum="1" >

<com.example.calci.views.MyTextView
android:id="@+id/tvGraph01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp" />
<Button
android:id="@+id/btnGraph01"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.1"
android:background="#99f" />
</LinearLayout>


<LinearLayout
android:id="@+id/Graph02"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_below="@id/seekBar"
android:layout_marginTop="50dp"
android:layout_toRightOf="@id/Graph01"
android:gravity="bottom"
android:orientation="vertical"
android:weightSum="1" >

<com.example.calci.views.MyTextView
android:id="@+id/tvGraph02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp" />

<Button
android:id="@+id/btnGraph02"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.1"
android:background="#9f9" />
</LinearLayout>

<!-- AND SO ON... -->
<RelativeLayout />




Деятельность:



seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromTouch) {
lp = new LinearLayout.LayoutParams(new ViewGroup.MarginLayoutParams(20,
LinearLayout.LayoutParams.WRAP_CONTENT));
lp.setMargins(55, 0, 0, 0);
tvGraph01.setLayoutParams(lp);
tvGraph01.setTextSize(6);
tvGraph01.setGravity(Gravity.CENTER);

lp = new LinearLayout.LayoutParams(new ViewGroup.MarginLayoutParams(20,
LinearLayout.LayoutParams.WRAP_CONTENT));
lp.setMargins(2, 0, 0, 0);
tvGraph02.setLayoutParams(lp);
tvGraph02.setTextSize(6);
tvGraph02.setGravity(Gravity.CENTER);

lp = new LinearLayout.LayoutParams(20, 0, 0.0002f * 2 * progress * 20);
lp.setMargins(55, 0, 0, 0);
btnGraph01.setLayoutParams(lp);

lp = new LinearLayout.LayoutParams(20, 0, 0.0002f * 2 * progress * 15);
lp.setMargins(2, 0, 0, 0);
btnGraph02.setLayoutParams(lp);
}
});




MyTextView



public class MyTextView extends TextView {
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
// RORARING the textbox as I want to show text at right angle.
canvas.rotate(270, getWidth() / 2, getHeight() / 2);
super.onDraw(canvas);
canvas.restore();
}
}




Я предполагаю, что основная причина этого- установка высоты textview как 20 .

Я попытался увеличить высоту textview, но это увеличивает пространство между кнопками.

Я пробовал различные значения силы тяжести, но это тоже не работает.



ЛЮБАЯ ПОМОЩЬ ОЦЕНЕННЫЙ...



EDIT



1). откуда угодно .android:singleLine="true" или android:ellipsize="end" или android:maxLines="1" не будут работать на мое дело, поскольку я не хочу ставить ... для переноса текста.

Я хочу отобразить полный текст.



2). установка android:layout_height="300dp" на LinearLayout не имела никакого значения, кроме увеличения высоты всех кнопок.



3). установка android:layout_height="150dp" на TextView не имела никакого значения, поскольку я устанавливаю высоту и ширину в коде.

775   5  

5 ответов:

Попробуйте это :

Вы назначаете фиксированную высоту своему макету linear graph.

Вместо этого:

android:layout_height="200dp"

Используйте это:

android:layout_height="300dp" or
android:layout_height="wrap_content"

Надеюсь, что это помогает вам.

Спасибо.

Измените ширину и высоту макета, которые можно предложить, и проверьте, что это сработает

 android:layout_width="40px" 
android:layout_height="wrap_content"

Добавьте это в свой TextView

Android: singleLine= " true" android: ellipsize= " end "

Он добавит ' ... "если текстовых данных больше, чем одна строка, но убедитесь, что вам придется установить ширину TextView для некоторых значений. Если вам нужно сохранить width как wrapcontent, то установите для него отступы с некоторыми значениями. попробовать его.!

Try this,

   android:layout_height="150dp"
   android:layout_width="wrap_content"
   android:maxLength="5"

Одно важное изменение, которое требовалось: изменение android:layout_toRightOf="@id/Graph01 в LinearLayout с id Graph02 на android:layout_toRightOf="@id/tvGraph01"

Т. е. даже если ширина textview увеличивается, соответствующее linearlayout не будет затронуто.

Кроме того, я должен установить поля для tvGraph02,btnGraph02,и т.д. после увеличения ширины textview в коде.

Comments

    Ничего не найдено.