web-dev-qa-db-fra.com

Comment faire pivoter la ligne dans Android XML?

J'essaie de tracer une diagonale dans une application Android avec XML, mais cela ne fonctionne pas. Il dessine simplement une ligne horizontale.

main.xml :

<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"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".TestActivity" >

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true" 
        style="@style/diagonalStyle">
    </RelativeLayout>

</RelativeLayout>

styles.xml :

<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <style name="diagonalStyle">
        <item name="Android:background">@drawable/background</item>
    </style>

</resources>

background.xml :

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >

    <item>
        <rotate
            Android:fromDegrees="0"
            Android:toDegrees="45"
            Android:pivotX="50%"
            Android:pivotY="50%" >
            <shape
                Android:shape="line"
                Android:top="1dip" >
                <stroke
                    Android:width="1dip"
                    Android:color="#FF0000" />
            </shape>
        </rotate>
    </item>

</layer-list>
15
Don Rhummy

Vous n'avez vraiment besoin que d'un changement de numéro pour que cela fonctionne. Il suffit de changer le deDegrees à 45:

<item>
    <rotate
            Android:fromDegrees="45"
            Android:toDegrees="45"
            Android:pivotX="50%"
            Android:pivotY="50%" >
        <shape
                Android:shape="line"
                Android:top="1dip" >
            <stroke
                    Android:width="1dip"
                    Android:color="#FF0000" />
        </shape>
    </rotate>
</item>

La rotation drawable http://developer.Android.com/reference/Android/graphics/drawable/RotateDrawable.html

utilise réellement le format Property Animation http://developer.Android.com/guide/topics/resources/animation-resource.html

Alors que vous créez une ligne diagonale non-animante, vous voulez qu’elle commence à 45 degrés et se termine également à 45 degrés. Donc, les fixer à 45 est la norme.

39
HalR

Vous pouvez essayer ceci: Créez une mise en page "divider.xml"

<?xml version="1.0" encoding="utf-8"?>
<View Android:layout_width="match_parent"
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_height="@dimen/one_dp"
    Android:layout_weight=".1"
    Android:background="@drawable/transparent_divider"
    Android:padding="5dp"
    Android:rotation="180"/>

Créez une forme dessinable "transparent_divider.xml":

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <size Android:height="1dp" />
    <solid Android:color="#808080" />
</shape>
0
Maddy