2015-07-03 43 views
0

我正在嘗試在整個圖層列表中創建邊框,而不是在圖層列表中的各個圖形上創建邊框。我從這裏以下代碼: http://gisinc.com/talk/creating-reusable-custom-toggle-button-android-applications/如何在整個圖層列表周圍創建邊框?

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:right="@dimen/settings_toggle_circle_diameter"> 
     <shape android:shape="oval"> 
      <solid android:color="@color/black"/> 
      <size 
       android:height="@dimen/settings_toggle_circle_diameter" 
       android:width="@dimen/settings_toggle_circle_diameter" /> 
     </shape> 
    </item> 
    <item android:left="@dimen/settings_toggle_circle_radius" android:right="@dimen/settings_toggle_circle_radius"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/black"/> 
      <size 
       android:height="@dimen/settings_toggle_circle_diameter" 
       android:width="@dimen/settings_toggle_circle_diameter" /> 
     </shape> 
    </item> 
    <item android:left="@dimen/settings_toggle_circle_diameter"> 
     <shape android:shape="oval"> 
      <solid android:color="@color/black"/> 
      <size 
       android:height="@dimen/settings_toggle_circle_diameter" 
       android:width="@dimen/settings_toggle_circle_diameter" /> 
     </shape> 
    </item> 
</layer-list> 

基本上我不希望個別橢圓形和矩形周圍的邊框而是圍繞整個事情一個邊界。有沒有辦法做到這一點?

回答

1

三種可能的選擇

  1. 使用stroke attribute of Shape和邏輯部分調整

  2. 用戶內/外(境)形狀

  3. 使用九補丁

我修改您的代碼以顯示邊框

<?xml version="1.0" encoding="utf-8"?> 
 
<!-- I have assumed 1 dp padding around all the shapes--> 
 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
 
    <!-- First Draw Left Outer circle(white) --> 
 
    <item android:right="22dp" android:left="0dp" android:top="0dp" android:bottom="0dp"> 
 
     <shape android:shape="oval"> 
 
      <solid android:color="@color/white"/> 
 
      <size 
 
       android:height="22dp" 
 
       android:width="22dp" /> 
 
     </shape> 
 
    </item> 
 
    <!-- Draw Left Inner circle(black) --> 
 
    <item android:left="1dp" android:top="1dp" android:bottom="1dp" android:right="23dp"> 
 
     <shape android:shape="oval"> 
 
      <solid android:color="@color/black"/> 
 
      <size 
 
       android:height="20dp" 
 
       android:width="20dp" /> 
 
     </shape> 
 
    </item> 
 
    <!-- Draw Right Outer circle(white) --> 
 
    <item android:left="22dp" android:right="0dp" android:top="0dp" android:bottom="0dp"> 
 
     <shape android:shape="oval"> 
 
      <solid android:color="@color/white"/> 
 
      <size 
 
       android:height="22dp" 
 
       android:width="22dp" /> 
 
     </shape> 
 
    </item> 
 
    <!-- Draw Right Inner circle(black) --> 
 
    <item android:left="23dp" android:right="1dp" android:top="1dp" android:bottom="1dp"> 
 
     <shape android:shape="oval"> 
 
      <solid android:color="@color/black"/> 
 
      <size 
 
       android:height="20dp" 
 
       android:width="20dp" /> 
 
     </shape> 
 
    </item> 
 
    <!-- Draw Rectangle Center (black) --> 
 
    <item android:left="11dp" android:right="11dp"> 
 
     <shape android:shape="rectangle"> 
 
      <solid android:color="@color/black"/> 
 
      <size 
 
       android:height="20dp" 
 
       android:width="20dp" /> 
 
     </shape> 
 
    </item> 
 
    <!-- Draw Rectangle Top edge(white) --> 
 
    <item android:left="11dp" android:right="11dp" android:bottom="21dp"> 
 
     <shape android:shape="rectangle"> 
 
      <solid android:color="@color/white"/> 
 
     </shape> 
 
    </item> 
 
    <!-- Draw Rectangle Bottom edge(white) --> 
 
    <item android:left="11dp" android:right="11dp" android:top="21dp"> 
 
     <shape android:shape="rectangle"> 
 
      <solid android:color="@color/white"/> 
 
     </shape> 
 
    </item> 
 

 
</layer-list>

+0

這工作的感謝!我試圖一次放下整個外部邊界,然後是內部形狀,但沒有成功...... – Tariq

0

我想提出一個不同的方法,我覺得更容易...

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="5dp"/> 
      <padding android:left="15dp" android:right="15dp" android:top="15dp" android:bottom="15dp"/> 
      <solid android:color="@color/primary"/> 
     </shape> 
    </item> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="5dp"/> 
      <solid android:color="@color/secondary"/> 
     </shape> 
    </item> 
    <item android:gravity="center"> 
     <bitmap android:src="@drawable/logo_splash" 
      android:gravity="center" /> 
    </item> 
</layer-list> 
相關問題