Android에서 XML을 사용하여 테두리 만있는 원을 만들려고합니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke android:width="1dp"
android:color="#000000"/>
</shape>
내가 사용한 코드는 위에 게시되어 있습니다. 그러나 나는 반지가 아닌 단단한 디스크를 얻습니다. 캔버스가 아닌 XML 만 사용하여 출력을 얻고 싶습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
감사.
편집 :
아래 답변 덕분에 작동했습니다. 내 최종 코드는 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="1.9"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />
<size android:width="100dp"
android:height="100dp"/>
<stroke android:width="1dp"
android:color="#FFFFFF"/>
</shape>
답변
이런 식으로 시도
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="2"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />
<stroke
android:width="2dp"
android:color="@android:color/darker_gray" />
</shape>
업데이트 : android:thicknessRatio="2"
완전한 서클을 제공하도록 만들어 짐 (Nexus 5-Lollipop 사용)
답변
이것을 사용하면 작동합니다
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient
android:centerX=".6"
android:centerY=".40"
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent"
android:type="radial" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
답변
구멍
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="1dp"
android:color="@color/indicator_unselected" />
</shape>
완전한
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="100dp" />
<solid android:color="@android:color/white" />
</shape>
답변
획 효과는 필요한 색상의 획 (예 : # 000)으로 투명한 타원을 그릴 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#000" />
<size
android:width="40dp"
android:height="40dp" />
</shape>
답변
벡터 드로어 블을 사용할 수 있다면 이것을 시도하십시오
<vector android:height="24dp" android:viewportHeight="512.0"
android:viewportWidth="512.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFF" android:fillType="evenOdd"
android:pathData="M0,0L512,0L512,512L0,512L0,0ZM256,511C396.8,511 511,396.8 511,256C511,115.2 396.8,1 256,1C115.2,1 1,115.2 1,256C1,396.8 115.2,511 256,511Z"
android:strokeColor="#00000000" android:strokeWidth="1"/>
</vector>
답변
Android 내장 값을 투명하게 @android:color/transparent
사용 #0000
하거나 사용 하거나 사용할 수 있습니다.#00000000
위의 경우 4 자리에서 시작하여 먼저 알파 용이고 8 자리 값에서 처음 두 자리는 알파와 동일합니다.
기본 알파 값보다 3 자리 또는 6 자리 색상을 제공하면 4 자리 또는 8 자리 값을 전달하여 해당 색상 값의 알파를 설정합니다.
답변
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval" >
<gradient
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#d9d9d9" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
</item>
<item
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp">
<shape android:shape="oval" >
<gradient
android:endColor="@android:color/transparent"
android:gradientRadius="20"
android:startColor="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#b3b3b3" />
<size
android:height="100dp"
android:width="100dp" />
</shape>
</item>
</layer-list>