2012-01-12 2 views
13

간단한 목표가 있습니다. 내 FrameLayout에 연한 회색 배경을 검은 선으로 그 아래에 배치하고 싶습니다. 지금까지 나는 이것을 가지고있다 :xml의 drawable에서 중력 '바닥'을 얻는 방법

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <shape android:shape="rectangle" android:gravity="center"> 
     <solid android:color="#EEEEEE" /> 
    </shape> 
    </item> 
    <item> 
    <shape android:shape="line" android:gravity="bottom" > 
     <stroke android:width="1dip" android:color="#010101"/> 
    </shape> 
    </item> 
    </layer-list> 

그러나 그것은 중력 = '하단'비트를 무시하는 즉, 가운데를 따라 선을 그립니다. 이 문제를 어떻게 해결할 수 있습니까?

편집 :이 질문은 매우입니다. 선택한 대답은 현재 API와 인라인 될 수도 있고 그렇지 않을 수도 있습니다. 더 이상 모니터링되지 않는 자신 만의 질문을이 질문에 추가하는 대신 시작할 수 있습니다.

답변

5

나는 이것에 대한 아홉 패치 이미지를 사용하는 것이 좋습니다 것 - 여기에 작업해야하는 예이다 :

Example nine-patch image

(! 그것은 단지 작은이다가 있지만,이)

당신이 만약 이것을 drawable 폴더에 넣고 FrameLayout의 배경을 설정하면 원하는 결과를 얻을 수 있습니다. 내용이 회색 영역으로 이동하고 # 010101 픽셀이 수평으로 늘어나서 아래쪽에 선을 그립니다. 9 패치로로드되도록 .9.png 확장자를 유지하십시오. 당신에게

+1

그건 좋은 지적입니다. 나는 그렇게 할 수 있습니다. 사실, 나는 그 라인에 대해 중력 태그를 작동시키기 위해 뜨거운 것을 알고 싶어 할 것입니다. 제게는 훨씬 좋은 솔루션 인 것 같지만 당신의 제안에 감사드립니다. –

+1

중력 태그 [here] (http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html)에 대한 언급이 없습니다.내가 순수 XML을 사용하여 이것을 달성하기 위해 어떤 방법을 볼 수 없다, 당신은 코드에서 ShapeDrawable을 만들고 레이아웃의 경계를 기반으로 경계를 설정할 수 있습니까? – kingraam

17

을하는 데 도움이

희망은 불행하게도 나는 드로어 블 근무 중력을 얻을 수있는 방법을 발견하지 않은,하지만 난 당신이 순수한 XML 당신이 을 원하는 것을 얻을 수있는 방법을 발견

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:top="-2dp" 
     android:left="-2dp" 
     android:right="0dp" 
     android:bottom="1dp" 
     > 
     <shape android:shape="rectangle"> 
      <solid android:color="#EEEEEE"/> 
      <stroke android:width="1dp" android:color="#010101"/> 
     </shape> 
    </item> 
</layer-list> 

행운을 빌어 요.

+1

<비트 맵 안드로이드 : 중력 = "왼쪽 | 아래" 안드로이드 : SRC = "@ 드로어 블/myDrawable"/> usman

22

나는 이것으로 많은 어려움을 겪었습니다. 기본적으로 바닥에 테두리를 만들려면 예상 한 것과 반대 방향으로 생각해야합니다. 테두리 색으로 사각형으로 시작합니다. 그 꼭대기에서 오프셋을 사용하여 실제 색상을 그립니다. Juan Pablo Saraceno

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

    <!-- CREATE A RECTANGLE WITH YOUR BORDER COLOR --> 
    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="#fff"/> 
     </shape> 
    </item> 

    <!-- NOW DEFINE THE NORMAL COLOR--> 
    <item android:bottom="BOTTOM_BORDER_THICKNESS E.G. 4dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="#ccc"/> 
     </shape> 
    </item> 
</layer-list> 

또는 제안 : 나는이 사용

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <color android:color="YOUR_BORDER_COLOR" /> 
    </item> 
    <item android:top="YOUR_BORDER_THICKNESS"> 
     <color android:color="YOUR_BG_COLOR" /> 
    </item> 
</layer-list> 
+3

이 정말 좋은 답변하고 더 나은 위치 이럴로 가치가있다. 내 생각에 안드로이드가 중력을 지원하지 않아서 올바른 방법을 강요하고이를 수행하도록 강요하는 것은 부끄러운 일입니다. 사각형, 도형 대신에 태그를 사용해도 나를 위해 일했습니다. 그래서 훨씬 간단합니다. <계층리스트의 xmlns : 로이드 = "http://schemas.android.com/apk/res/android"> <색 로이드 : 컬러 = "YOUR_BORDER_COLOR"/> <컬러 안드로이드 : 색상 = "YOUR_BG_COLOR은"/>

+5

유일한 문제는 내가, 초과 인출 생성 당신이 당신의 테두리 색상으로 전체 사각형을 그리기 때문에에만 실제와 초과 인출 할 수 있다는 것입니다 구형. 실제 중력이 없다면 여전히 9 패치가 승리합니다. –

+1

투명한 상단 부분과 단단한 하단 부분이 필요한 경우 작동하지 않습니다. 그래서 나는 9 패치로 작업 할 것인가? –

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

    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/Black" /> 
     </shape> 
    </item> 
    <item android:bottom="5dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/White" /> 
     </shape> 
    </item> 

</layer-list> 
2

이 작동!

<item> 
     <bitmap 
     android:gravity="left|bottom" 
     android:src="@drawable/myDrawable" /> 
</item> 
+0

Nop ShapeDrawable은 비트 맵이 아니기 때문에 드로어 블이므로 사용할 수 없습니다. – nsvir

1

음, 꽤 오래된 질문이지만 답변 중 어느 것도 그래서 여기에 작업 예제 (gravity 작업을 만드는 방법) 실제 질문에 대답 보이지 않는다 : 유추에 의해

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

    <item> 
     <color android:color="#2196F3"/>  <!-- Background color --> 
    </item> 

    <item android:gravity="bottom"> 
     <shape> 
      <size android:height="10dp" />  <!-- I would suggest 1dp --> 
      <solid android:color="#F50057" /> <!-- Line color --> 
     </shape> 
    </item> 
</layer-list> 

당신 경우 중력을 사용하고 싶습니다 left 또는 right 변경 속성 height to