2010-09-16 34 views
9

Có cách nào để áp dụng kiểu cho nút khi nhấn nút không?Áp dụng kiểu khác nhau cho nút khi nhấn

Nếu tôi có một phong cách style.xml:

<resources> 
    <style name="test"> 
     <item name="android:textStyle">bold</item> 
    </style> 
</resources> 

một selector trong button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/test_pressed" 
       style="@style/test" 
      android:state_pressed="true"/> 
    <item android:drawable="@drawable/test_focused" 
      android:state_focused="true"/> 
    <item android:drawable="@drawable/test_normal"/> 
</selector> 

sau đó sẽ như thế nào tôi tham khảo button.xml trong bố cục của tôi?

<Button 
     ... 
     android:???="button"/> 

Cảm ơn!

Trả lời

-3

Tôi chưa thử nhưng có lẽ bạn chỉ có thể bao gồm android:id="button" trong bộ chọn của mình.

+0

Tôi là một chút nhầm lẫn với câu trả lời của bạn. Bạn có thể giải thích về điều này? Vì vậy, tôi sẽ tham khảo button.xml trong bố cục của tôi bằng cách sử dụng android: id = "button"? – user440308

0
<Button 
     android:background="@drawable/button"/> 
+0

Tôi đã thử sử dụng tính năng này, nhưng nó không hoạt động ... bạn đã tự mình thử chưa? Cho tôi biết! – user440308

+0

có. chỉ hoạt động tốt - xem ví dụ về imageview tại đây http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList –

+0

Và xóa kiểu = "@ style/test" khỏi tệp button.xml của bạn nó nên đi đến

0

Để tham khảo bộ chọn, bạn phải đặt nó làm nền cho Nút đó.

<Button 
    android:background="@drawable/button" 
/> 

Và đối với Bold khi ép, tôi đã không thử nó một trong hai, nhưng có lẽ bạn có thể đề cập đến phong cách văn bản trong chọn của bạn, iso đề cập đến một phong cách từ nó:

android:textStyle="bold" 

Nếu đây cũng không hoạt động, bạn có thể làm điều đó trong nút onClick().

+0

android: nền bỏ qua phong cách trong trạng thái "được nhấn" của tôi trong button.xml. Tôi đã thử nó trước đây. Tôi không nghĩ rằng tôi sẽ dễ dàng áp dụng một phong cách cho một nút thông qua XML. – user440308

4

Bạn có thể đạt được điều này bằng cách sử dụng định nghĩa nút XML.

Tạo một file XML trong thư mục drawable của bạn như sau:

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

     <item android:state_pressed="true" 
     android:drawable="@drawable/green_button" /> 

     <!-- <item android:state_focused="true" 
     android:drawable="@drawable/button_focused" /> --> 

     <item android:drawable="@drawable/black_button" /> 
</selector> 

Như bạn có thể thấy điều này cho phép bạn xác định hình ảnh nút khác nhau để sử dụng cho các quốc gia khác nhau (black_button, green_button vv nên .png trong thư mục drawable của bạn cũng)

Bây giờ, từ tập tin Layout.xml của bạn, bạn chỉ có thể đặt nền nút để trỏ đến bộ chọn nút:

<Button android:text="Play" android:id="@+id/playBtn" 
      android:background="@drawable/button_selector" 
      android:textColor="#ffffff" /> 

Sau đó, XML của Selector có thể được tham chiếu từ thư mục drawable giống như bất kỳ tập tin ảnh nào có thể.

+0

Điều này không thực sự giải quyết câu hỏi của tôi ... điều này chỉ cho phép tôi thay đổi hình nền của một nút. Tôi đã hỏi liệu tôi có thể áp dụng một kiểu cho một nút (ví dụ, in đậm văn bản) qua XML khi được nhấn. – user440308

2

Bạn có thể tận dụng Color State List Resource

Ví dụ từ liên kết: file

XML lưu tại res/màu/BUTTON_TEXT.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#ffff0000"/> <!-- pressed --> 
    <item android:state_focused="true" 
      android:color="#ff0000ff"/> <!-- focused --> 
    <item android:color="#ff000000"/> <!-- default --> 
</selector> 

XML bố trí này sẽ áp dụng danh sách màu sắc cho một Xem:

<Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/button_text" 
    android:textColor="@color/button_text" /> 
Các vấn đề liên quan