Как повернуть линию в Android XML?

Я пытаюсь нарисовать диагональную линию в приложении для Android с XML, но она не работает. Он просто рисует горизонтальную линию.

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>

стили.в XML:

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

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

</resources>

фон.в 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>

2 ответов


вам действительно нужно было только одно изменение номера, чтобы заставить его работать. Просто измените fromDegrees на 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>

поворот drawable http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html

фактически использует свойство Animation format http://developer.android.com/guide/topics/resources/animation-resource.html

в то время как вы делаете неживую диагональную линию, вы хотите, чтобы она началась на 45 градусов, и в конечном итоге на 45 градусов тоже. Поэтому устанавливать их как в 45-это норма.


Вы можете попробовать это : Создайте макет " разделитель.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"/>

создать фигуру катры "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>