2012-04-04 23 views
64

Vì vậy, tôi đã nhìn vào Android Dev Design site cho ICS và tất cả các ứng dụng có những phụ đề/phần tiêu đề:Android 4.0 Sub-Title (phần) Nhãn Styling

ICS Section Headers

tôi đã tự hỏi nếu có ai biết tạo kiểu tùy chỉnh để đạt được các nhãn trông như thế này. Tôi không thể tìm thấy bất kỳ Chế độ xem nhãn nào trông giống như thế này trong SDK Android nhưng tôi thực sự thích cách nhìn này.

Cảm ơn bạn đã nâng cao!

Trả lời

69

Vì vậy, đây là những gì tôi đã kết thúc bằng:

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="sectionHeader" parent="android:Widget.Holo.Light.TextView"> 
     <item name="android:drawableBottom">@drawable/section_header</item> 
     <item name="android:drawablePadding">4dp</item> 
     <item name="android:layout_marginTop">8dp</item> 
     <item name="android:paddingLeft">4dp</item> 
     <item name="android:textAllCaps">true</item> 
     <item name="android:textColor">@color/emphasis</item> 
     <item name="android:textSize">14sp</item> 
    </style> 
</resources> 

đâu @ drawable/section_header là:

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <size android:width="1000dp" android:height="2dp" /> 
    <solid 
     android:color="@color/emphasis"/> 
</shape> 

Và @ màu của: quyền của

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="emphasis">#31b6e7</color> 
    <color name="bg_gray">#cecbce</color> 
</resources> 
+1

Điều này không làm cho đường màu xanh dương dính vào văn bản bên dưới, ví dụ trong GridLayout với TextView bên dưới. Tôi đoán đó là bởi vì họ không sử dụng TextViews trong ảnh chụp màn hình. Hành vi thích hợp nên là gì? – pjv

+14

mẹo dành cho noobs: mã trên cùng phải nằm trong res/values ​​/ sectionHeader.xml.Phần @colors phải nằm trong res/values ​​/ colors.xml. Cách sử dụng: đặt kiểu = "@ style/sectionHeader" trên một chế độ xem văn bản nơi bạn muốn tiêu đề này. Sử dụng margin = "15dp" trên textview –

+0

Đây là đóng, nhưng bạn sẽ muốn sửa đổi nó một chút giống như phong cách trong câu trả lời của annie: textStyle in đậm. paddingLeft của 8dp thay vì 4, và tôi sẽ làm cho chiều cao của drawable 1dp thay vì 2. Ngoài ra, thêm một paddingBottom 8dp. – joepetrakovich

2

Tôi không chắc chắn chính xác kiểu nào, nhưng ứng dụng tùy chọn cũng sử dụng kiểu đó (hoặc thứ gì đó rất giống). Đó là tiêu đề phần. Ngoài ra, TextField có textAllCaps được đặt thành true. Bạn có thể tìm thấy nó trong thư mục nguồn của SDK nếu bạn tìm kiếm các textAllCaps :)

+3

FYI, tính năng này chỉ khả dụng cho API cấp 14 trở lên. Bạn sẽ phải đặt tất cả các mũ theo chương trình hoặc sử dụng các chuỗi toàn bộ mũ đặc biệt trong tệp tài nguyên chuỗi của bạn để làm việc này trước Cấp 14. – annie

+1

14 và sau đó, nhưng có, bạn nói đúng. – dmon

52

Brandon; bạn sẽ cần phải làm công việc tùy chỉnh ngay bây giờ để có được phong cách màu xanh, đó là loại bực bội vì nó được xếp trong suốt hướng dẫn thiết kế mới.

Thật không may, bạn không thể tham chiếu Widget.Holo.Light.TextView.ListSeparator làm cha mẹ của kiểu tùy chỉnh, vì đó là riêng tư.

Nhưng nếu bạn quan tâm đến chỉ trong dòng màu xám, bạn có thể sử dụng chứng khoán Android phong cách nội tuyến:

style="?android:attr/listSeparatorTextViewStyle" 

này ít nhất sẽ giúp bạn có được vào dòng màu xám, tất cả các kiểu mũ:

enter image description here

Câu trả lời của Brandon sẽ đưa bạn đến kiểu xanh tùy chỉnh.

FYI, nếu bạn muốn phân lớp chính xác từ hiện tại (v15) phong cách Android cho Danh sách phân tách, phong cách kết hợp sử dụng trong Android cho Widget.TextView.ListSeparatorWidget.Holo.Light.TextView.ListSeparator mà bạn có thể sao chép sang một phong cách mới là:

<item name="android:background">@drawable/list_section_divider_holo_light</item> 
<item name="android:textAllCaps">true</item> 
<item name="android:layout_width">match_parent</item> 
<item name="android:layout_height">wrap_content</item> 
<item name="android:textStyle">bold</item> 
<item name="android:textColor">?android:textColorSecondary</item> 
<item name="android:textSize">14sp</item> 
<item name="android:gravity">center_vertical</item> 
<item name="android:paddingLeft">8dip</item> 

Mặc dù vậy, bạn sẽ phải sao chép các bản vẽ vào các thư mục của riêng mình vì chúng là riêng tư.

0

Tôi nói, để vẽ đường chỉ cần sử dụng Chế độ xem, với độ cao được đặt tu 1dp trở lên. Bạn có thể đặt màu bằng thuộc tính nền