it-swarm.com.de

Vertikale Textansicht in Android

Ich versuche so etwas wie folgen zu schaffen.

enter image description here

mit LinearLayout und TableLayout. Aber ich habe mich an vertikalem Text festgesetzt. Es nimmt mehr Platz in Anspruch, als nach der Drehung benötigt wird. 

fließend ist das XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <TextView
        Android:id="@+id/tv_CONSEQUENCES"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:rotation="-90"
        Android:text="CONSEQUENCES"
        Android:textAppearance="?android:attr/textAppearanceLarge" />

    <TableLayout
        Android:layout_width="wrap_content"
        Android:layout_height="match_parent" >

        <TableRow
            Android:id="@+id/tableRow1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button4"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button3"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

        </TableRow>

        <TableRow
            Android:id="@+id/tableRow1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button4"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button3"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

        </TableRow>
         <TableRow
            Android:id="@+id/tableRow1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button4"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button3"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

        </TableRow>
         <TableRow
            Android:id="@+id/tableRow1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" >

            <Button
                Android:id="@+id/button1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button4"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button3"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

            <Button
                Android:id="@+id/button2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="Button" />

        </TableRow>
    </TableLayout>

</LinearLayout>

und Ausgabe so.

enter image description here

vertikaler Text nimmt mehr Platz ein, als er benötigt hätte. und auch der ganze Text erscheint nicht. :(

25
Ahmed Nawaz

Sie sollten die Antwort auf Ihre Frage unter dem folgenden Link erhalten:

vertikaler Text in Textansicht

15
nidhi

Sie können den folgenden Code verwenden:

Android:rotation="270"
17
quangson91

Keine der Lösungen funktionierte für mich, aber ich habe diesen Blogeintrag von Mark Allison gefunden: https://blog.stylingandroid.com/verticaltext-part-1/

public class VerticalTextView extends TextView
{
    final boolean topDown;

    public VerticalTextView( Context context, 
        AttributeSet attrs )
    {
        super( context, attrs );
        final int gravity = getGravity();
        if ( Gravity.isVertical( gravity )
            && ( gravity & Gravity.VERTICAL_GRAVITY_MASK ) 
            == Gravity.BOTTOM )
        {
            setGravity( 
                ( gravity & Gravity.HORIZONTAL_GRAVITY_MASK )
                    | Gravity.TOP );
            topDown = false;
        }
        else
        {
            topDown = true;
        }
    }

    @Override
    protected void onMeasure( int widthMeasureSpec, 
        int heightMeasureSpec )
    {
        super.onMeasure( heightMeasureSpec, 
            widthMeasureSpec );
        setMeasuredDimension( getMeasuredHeight(), 
            getMeasuredWidth() );
    }

    @Override
    protected void onDraw( Canvas canvas )
    {
        TextPaint textPaint = getPaint();
        textPaint.setColor( getCurrentTextColor() );
        textPaint.drawableState = getDrawableState();

        canvas.save();

        if ( topDown )
        {
            canvas.translate( getWidth(), 0 );
            canvas.rotate( 90 );
        }
        else
        {
            canvas.translate( 0, getHeight() );
            canvas.rotate( -90 );
        }

        canvas.translate( getCompoundPaddingLeft(), 
            getExtendedPaddingTop() );

        getLayout().draw( canvas );
        canvas.restore();
    }
}

Die Drehung erfolgt durch die Schwerkraft. Stellen Sie also sicher, dass Sie dies in Ihrer XML-Datei festlegen:

<com.stylingandroid.verticaltext.VerticalTextView
    style="@style/verticalTextStyle"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:gravity="bottom|right"
    Android:text="@string/text" />
5
Christian D

sie müssen TextView erweitern und die onDraw überschreiben.

1
Blackbelt
        Android:rotation="-90"
        Android:layout_gravity="center"

Arbeitete für mich.

1
Luke Allison

in .xml-Datei einfach einfügen

<TextView> 
 Android:layout_width="wrap content"
 Android:layout_height="wrap content"
 Android:rotation="270"
</TextView>
1
amad durrani
    val textPaint = Paint(Paint.ANTI_ALIAS_FLAG)
    textPaint.textSize=toPx(16)
    textPaint.color=Color.parseColor("#FFFFFF")
    canvas.save()
    canvas.translate(50F, 60F)
    canvas.rotate(90F)
    canvas.drawPaint(textPaint)
    canvas.drawText("YourText", 0F,0F, textPaint)
    canvas.restore()
0
Maryam Azhdari

warum nicht auffüllen? Dann wird es in der Mitte des Bildschirms angezeigt. Probieren Sie es einfach aus, wenn Sie möchten

0
Giant

Setzen Sie die gesamte Textansicht in lineares Layout und versuchen Sie, das richtige Gewicht des Layouts anzugeben, um Ihr Problem zu lösen 

0
hm7