2

我正在使用按钮和文本视图创建一个类似结构的条形图。

我想在每个条形上方显示一些特定值。

如果该值在 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();
    }
}

我想这背后的主要原因是将 textview 的高度设置为 20
我尝试增加 textview 的高度,但这会增加按钮之间的空间。
我尝试了各种重力值,但这也不起作用。

任何帮助表示赞赏...

编辑

1)。任何来自 . android:singleLine="true"android:ellipsize="end"android:maxLines="1"不会为我的事业工作,因为我不想将...用于文本换行。
我想显示全文。

2)。除了增加所有按钮的高度之外,设置android:layout_height="300dp"LinearLayout没有任何区别。

3)。设置android:layout_height="150dp"TextView没有任何区别,因为我在代码中设置了高度和宽度。

4

5 回答 5

1

试试这个 :

您正在为linear graph布局分配固定高度。

而不是这个:

android:layout_height="200dp"

用这个:

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

希望它可以帮助你。

谢谢。

于 2012-12-18T07:35:02.047 回答
1

更改建议的布局宽度和高度,并检查它是否可行

 android:layout_width="40px" 
android:layout_height="wrap_content"
于 2012-12-18T07:47:49.830 回答
1

将此添加到您的 TextView

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

如果文本数据多于单行,它将添加“...”,但请确保您必须将 TextView 的宽度设置为某些值。如果您需要将宽度保持为wrapcontent而不是使用一些值设置填充。尝试一下。!

于 2012-12-18T07:59:32.880 回答
1
Try this,

   android:layout_height="150dp"
   android:layout_width="wrap_content"
   android:maxLength="5"
于 2012-12-18T08:02:35.627 回答
0

需要的一项重要更改:将具有 id Graph02android:layout_toRightOf="@id/Graph01的LinearLayout 更改为android:layout_toRightOf="@id/tvGraph01"

即即使textview 宽度增加,相应的linearlayout 也不会受到影响。

另外,我必须为 , 等设置tvGraph02边距btnGraph02。在代码中增加 textview 的宽度后。

于 2012-12-19T10:07:18.450 回答