2014-04-25 1 views
8

드로어 블 리소스에서 텍스트 모양을 만들 수 있습니까?드로어 블 리소스에서 도형이있는 텍스트

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item> 
     <shape android:shape="oval"> 
      <stroke android:width="3dp" android:color="#QQffQQ"/> 
      <size android:width="120dp" android:height="120dp"/> 
     </shape> 
     </item> 
     <item android:right="59dp" android:left="59dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="£22££20"/> 
     </shape> 
     </item> 
     <item android:top="59dp" android:bottom="59dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="£20££20"/> 
     </shape> 
     </item> 
     <item> 
     <!--text should be here--> 
     </item> 
    </layer-list> 

답변

3

아니, 당신은 그렇게 할 수 없습니다 내가 여기에 ... 을 많이 인터넷 검색을 아무것도 발견되었다 내 당김 파일입니다. 그러나 TextView의 배경으로 Drawable을 설정 한 다음 에 텍스트를 설정하면 Drawable의 다른 레이어 위에 표시됩니다.

+17

왜 TextView를 사용하지 않습니까? 아마도 OP는 스플래시 화면에서 레이아웃 리소스가 아닌 드로어 블 리소스가 필요한 텍스트를 사용하려고하기 때문입니다. – zyamys

+0

또는 일부 텍스트가 포함 된 TransitionDrawable을 사용하여 드로어 블을 사용하여 크로스 페이드가 일부 문구와 함께 배경을 전환 할 수 있습니다. 이미지로 전환 할 수는 있지만 drawable 레이어 목록의 사용을 무효화합니다. – garlicman

+0

@zyamys 위에서 언급 한 시나리오, 즉 드로어 블 리소스를 필요로하는 스플래시 화면의 텍스트에 대한 귀하의 제안은 무엇입니까? – user846316

1

대신 벡터 드로어 블을 사용할 수 있습니다 (예 : svg 파일에서 변환).
그런 다음 vector를 레이어 중 하나로 사용하십시오.
이렇게하면 TextViews가없는 단일 드로어 블을 만들 수 있으므로 스플래시 화면 테마에서 windowBackground로 쉽게 사용할 수 있습니다. 텍스트와 벡터 당김이다 - ic_splash_text

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle"> 
      <gradient android:angle="270" 
         android:startColor="#C3DAE0" 
         android:endColor="#FFFFFF" 
         android:type="linear"/> 
     </shape> 
    </item> 
    <item 
     android:gravity="center" 
     android:drawable="@drawable/ic_splash_text"/> 
</layer-list> 

.

회원님이 당신이 가지고이를 위해 API < 21 에 대상 are4 경우 벡터가 지원 추가하는 것을 잊지 :

  1. 모듈의 build.gradle에 추가 (응용 프로그램 수준) :

    을 android {
    vectorDrawables.useSupportLibrary = true.
    } 활동의 정적 블록

  2. 등록 대리인 : (참)

    정적 {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled;
    }