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

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

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

Если значение находится в пределах 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);
               }
    });

Мой текстовый вид

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();
    }
}

Я предполагаю, что основной причиной этого является установка высоты текстового представления на 20.
Я пытался увеличить высоту текстового представления, но это увеличивает расстояние между кнопками.
Я пробовал различные значения гравитации. , но это тоже не работает.

ЛЮБАЯ ПОМОЩЬ ПРИЯТНА...

РЕДАКТИРОВАТЬ

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

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

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


person GAMA    schedule 18.12.2012    source источник
comment
попробуйте это... увеличьте значение поля в android: layout_marginRight = 10dp   -  person Ketan Ahir    schedule 18.12.2012
comment
Используйте 1_   -  person Sherif elKhatib    schedule 18.12.2012
comment
@GAMA вы пробовали использовать опубликованное решение? твоя проблема решена?   -  person Pratik Sharma    schedule 18.12.2012
comment
Пожалуйста, проверьте ОБНОВЛЕННЫЙ вопрос.   -  person GAMA    schedule 19.12.2012


Ответы (5)


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

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

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

android:layout_height="200dp"

Использовать это:

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

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

Спасибо.

person Pratik Sharma    schedule 18.12.2012
comment
Пожалуйста, проверьте ОБНОВЛЕННЫЙ вопрос - person GAMA; 19.12.2012

измените предлагаемую ширину и высоту макета и проверьте, все ли сработает

 android:layout_width="40px" 
android:layout_height="wrap_content"
person Janmejoy    schedule 18.12.2012
comment
Пожалуйста, проверьте ОБНОВЛЕННЫЙ вопрос. - person GAMA; 19.12.2012

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

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

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

person Nitin Bathija    schedule 18.12.2012
comment
Пожалуйста, проверьте ОБНОВЛЕННЫЙ вопрос. - person GAMA; 19.12.2012

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

т. е. даже если ширина текстового представления увеличивается, соответствующий линейный макет не будет затронут.

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

person GAMA    schedule 19.12.2012

person    schedule
comment
Пожалуйста, проверьте ОБНОВЛЕННЫЙ вопрос. - person GAMA; 19.12.2012