2011-12-06 6 views
17

내 안드로이드 XML 레이아웃에서 borderframe.xml을 배경으로 사용하여 테두리를 적용하고 있습니다. 내가 특정 코너에만 둥근 모양을 주겠다 동안 반경 = "10px"는 다음 작동하지만하십시오 안드로이드이 있지만,특정 모서리에 둥근 테두리를 만들 수없는 이유는 무엇입니까?

<?xml version="1.0" encoding="UTF-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke 
     android:width="1dip" 
     android:color="#ffffff"/> 
    <solid 
     android:color="#95865F"/> 
    <corners 
     android:radius="10px"/> 

    <padding 
     android:left="1dp" 
     android:right="1dp" 
     android:top="1dp" 
     android:bottom="1dp"/> 
</shape> 

지금 :

borderframe.xml 파일은 아래처럼 보이는 그러면 작동하지 않습니다. 이 로그 고양이에는 어떤 에로 메시지는 없지만 내가 좋아하는 일식에서 오류를 발견 :

그 xml 파일에 패딩이없는 경우에도
The graphics preview in the layout editor may not be accurate: 
* Different corner sizes are not supported in Path.addRoundRect. 

다음 또한 내가 어떤 경계를 볼 수 없습니다입니다.

이제 어떻게해야합니까? 그리고 topLeftcorner 및 bottomLeftCorner에 대해서만 둥근 테두리를 만들고 싶다면 무엇을할까요? ? 감사합니다. .

답변

10

당신은 당신은 단지 둥근 왼쪽 상단 원하는 가정, 그렇게해야합니다 :

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <corners 
     android:radius="20sp" 
     android:topRightRadius="0dp" 
     android:bottomRightRadius="0dp" 
     android:bottomLeftRadius="0dp" /> 
    <gradient 
     android:startColor="@color/logo_blue" 
     android:endColor="@color/blue" 
     android:angle="0"/> 
</shape> 

설명을 : 모든 코너 (처음에) 다른 일보다 모서리 반경 더 제공해야하거나 모서리가 둥글다. 특정 모퉁이를 반올림하지 않으려면 android:radius을 사용하여 1보다 큰 기본 모퉁이 반경을 설정 한 다음 각 모서리를 실제로 원하는 값으로 대체하고 0을 제공합니다 ("0dp"). 당신은 둥근 모서리를 원하지 않습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke 
     android:width="1dip" 
     android:color="#ffffff"/> 
    <solid 
     android:color="#95865F"/> 
    <corners 
     android:radius="10px" 
     android:topRightRadius="0dp" 
     android:bottomRightRadius="0dp" /> 

    <padding 
     android:left="1dp" 
     android:right="1dp" 
     android:top="1dp" 
     android:bottom="1dp"/> 
</shape> 

업데이트 The Shape Drawable Resource Android Documentation에서

:

안드로이드 : 반경 차원 는 [source]

은 결과적으로, 당신은 당신의 당김을 정의 할 필요가있다. 모든 모서리의 반지름입니다 (치수는 ). 이 속성은 다음과 같은 속성을 통해 에 의해 각 구석에서 무시됩니다.

오버라이드 (override) 내가 SDK 도구 (19), 플랫폼 도구 (11)를 사용하고 안드로이드 4.0.3에서 응용 프로그램을 실행하고있어 문제의 키워드 ...

+0

감사합니다. 내가 그것을 시도하자. –

+1

감사합니다. 그러나 패딩이 모양에 정의되어 있지 않으면 경계를 볼 수 없습니다. . 왜 ? –

+0

그 모양에 패딩이 없다면 왜 코너를 볼 수 없습니까 ?? –

6

입니다. 다음 XML을 사용할 때 :

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#dd000000"/> 
    <padding 
     android:left="7dp" 
     android:top="7dp" 
     android:right="7dp" 
     android:bottom="7dp" /> 
    <corners 
     android:bottomLeftRadius="25dp" 
     android:bottomRightRadius="25dp" 
     android:topLeftRadius="0dp" 
     android:topRightRadius="0dp" /> 
</shape> 

Eclipse 경고는 미리보기를 표시 할 수 없다는 의미입니다. het app에서는 올바른 것으로 나타납니다.

+0

Aha. 지금은 Android Studio에서 여전히 발생합니다. –

16

나는 또한 동일한 문제에 직면 해있다. 하지만 그 때문에 레이어 목록을 사용합니다. 나는 당신을 도울 수있는 나의 대답을 게시한다.
출력 화면 image 1

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="#c1c1c1" /> 
      <solid android:color="#c1c1c1" /> 
      <corners android:radius="20dp"/> 
     </shape> 
    </item> 

    <item android:right="20dp" 
     > 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="#c1c1c1" /> 
      <solid android:color="#c1c1c1" /> 
     </shape> 
    </item> 

</layer-list> 
+0

나만이 유일한 작품이다. 감사. – black

0

을 확인하시기 바랍니다 나는 포럼 중 하나에 솔루션을 얻었다. 나는 각 모서리 &을 drawable의 xml에 추가하여 주석으로 해결했습니다.나는 이해를 위해서만 아래 주석 코드를 유지했다.

XML 코드 -

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > 
     <solid android:color="#fd2149" /> 
     <stroke android:width="1dip" android:color="#ffd102"/> 
     <!-- <corners 
      android:bottomLeftRadius="8dp" 
      android:bottomRightRadius="8dp" 
      android:topLeftRadius="8dp" 
      android:topRightRadius="8dp" /> 
     --> 
     <corners android:radius="8dp" /> 
    </shape> 

--- Edited- 은 위의 코드는 당김 폴더에 내 back.xml하고 필요한 경우 동일한 back.xml에 패딩을 추가 할 수 있습니다. 새로운 개발자 인 경우 back.xml은 레이아웃 파일에서 다음과 같이 참조됩니다.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tableLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textSize="20sp" 
    android:scrollbars="vertical" 
    android:background="@drawable/back"> 

희망이 있습니다.