2011-06-28 41 views
13

鑑於我有一個背景繪製創建TextViews bulletpoints這樣的:<size>屬性在使用層列表時沒有用?

Example of what I want

然後我的XML代碼如下所示:

<?xml version="1.0" encoding="utf-8"?> 

<layer-list 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:right="235dp"> 
     <shape android:shape="oval"> 
      <padding android:left="10dp" /> 
      <size android:height="5dp" android:width="5dp"/> 
      <solid android:color="@color/my_pink"/> 
     </shape> 
    </item> 
    <item android:left="10dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#ffffff"/> 
      <padding android:left="10dp" /> 
     </shape> 
    </item> 
</layer-list> 

但一旦我用上面的代碼所示,我要點是這樣的:

Result of the XML shown above

看來<size>標記完全被忽略。

你會如何解決這個問題?使用9patch,是的,我知道..也許這是最容易做到的..但事實上,我希望找到一個XML解決方案,因爲它在將來更加靈活。

自定義繪圖也是不可能的。

+1

看我的答案http://stackoverflow.com/questions/26841517/layer-list-ignore-size-tag/ – offset

回答

6

<size>標籤肯定工作在layer-list ,顯示對textviews你可以使用XML屬性android:drawableLeft 的要點 - >link

採用這種方法,沒有必要9補丁和自定義繪製的。

張貼代碼&屏幕截圖供參考。

RES /繪製/ bullet_point_layer.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:right="3dp"> 
    <shape android:shape="oval"> 
     <padding android:left="10dp" /> 
     <size android:height="10dp" android:width="10dp"/> 
     <solid android:color="#ff0080"/> 
    </shape> 
</item> 

RES /佈局/ main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView one" 
    android:textColor="@android:color/black" 
    android:drawableLeft="@drawable/bullet_point_layer" 
    android:background="@android:color/white" /> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView Two" 
    android:textColor="@android:color/black" 
    android:drawableLeft="@drawable/bullet_point_layer" 
    android:background="@android:color/white" /> 

</LinearLayout> 

它的外觀

+0

這當然是一個很好的解決方案。之前沒有考慮drawableLeft。謝謝! –

+0

@Vijay C:標記正在工作或不在層列表中?你說「標籤肯定會在層列表作品」,我也有問題,在RatingsBar這樣的圓點,明星越來越垂直拉伸,有沒有什麼辦法來設置高度爲wrap_content? – Jayesh

+0

@Jayesh你有沒有使用drawableLeft? –

5

這是一個老的文章,但我想我會添加一些非常重要的這是對這個職位失蹤。

從我的經驗<layer-list>的最後一個項目將是其尺寸值取自該項目。

所以在這個例子中我創建了一個雙行分隔線。我在末尾指定一個空項目來指定分隔符的可繪製高度。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="#535353" /> 
     </shape> 
    </item> 

    <item android:top="@dimen/common_divider_line_half_size"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#737373" /> 
     </shape> 
    </item> 

    <!-- Last item empty to specify divider height --> 
    <item> 
     <shape android:shape="rectangle"> 
      <size android:height="@dimen/common_divider_line_size"/> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 
</layer-list> 
+1

非常有趣。 –

+0

將ImageView scaleType設置爲fitXY,這樣您就不必設置尺寸。以下將工作: Johan

+0

否。在Android 21下,系統會忽略大小標記或android:width/height屬性。 – DYS

相關問題