Я создаю гистограмму, подобную структуре, используя кнопки и текстовые представления.
Я хочу отображать определенное значение над каждой полосой.
Если значение находится в пределах 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
не имеет никакого значения, так как я устанавливаю высоту и ширину в коде.