2012-09-14 39 views
15

Tôi muốn đặt góc tròn cho một nút trong Android cùng với việc thay đổi màu của nút khi được chọn. Tôi đang làm những việc sau đây.Cách đặt màu lựa chọn nút cùng với các góc bo tròn trong android?

drawable/push_button.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" >  
    <item android:state_pressed="true" android:drawable="@color/green"/> 
    <item android:state_focused="true" android:drawable="@color/green"/> 
    <item android:state_focused="false" android:drawable="@color/green"/> 
    <item android:state_pressed="false" android:drawable="@color/red"/> 
    <item android:drawable="@drawable/push_button_background"/>   
</selector> 

drawable/push_button_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <solid android:color="#3F4040"/> 
    <corners 
    android:radius="7dp" 
    /> 
</shape> 

và trong mã, tôi đang sử dụng

android:background="@drawable/push_button" 

Ở đây, vấn đề là, nút màu được đặt đúng khi chọn & bỏ chọn. Nhưng, các góc tròn không hoạt động.

Làm cách nào để thực hiện điều đó? Nếu tôi sử dụng

android:background="@drawable/push_button_background" 

sau đó, góc tròn đang làm việc nhưng nút thay đổi màu sắc trên lựa chọn không hoạt động

Làm thế nào để thực hiện điều này?

Tôi đã giới thiệu liên kết this. Thậm chí sau đó không có sự giúp đỡ !!

+0

bạn có thể cần xác định một vài 'drawables' khác với màu mong muốn và tất cả với bán kính và thay đổi' @ color/color' thành 'drawables' đã xác định của bạn. – Aprian

+0

@Aprian .. bạn có thể giải thích thêm chút nữa không? Tôi là một người mới đến android !! bạn có thể cho một số mẫu? – Bharath

Trả lời

51

Tôi đã tìm thấy câu trả lời cho câu hỏi của mình với một vài thử nghiệm & các lần thử lỗi.

Đây là giải pháp.

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

<item android:state_pressed="true"> 
    <shape > 
    <solid android:color="@color/green"/> 
    <corners 
    android:radius="7dp"/> 
    </shape> 
</item> 

<item android:state_focused="true" > 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/green"/> 
    <corners 
    android:radius="7dp"/> 
    </shape> 
</item> 

<item android:state_focused="false" > 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/red"/> 
    <corners 
    android:radius="7dp"/> 
    </shape> 
</item> 

<item android:state_pressed="false" > 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/red"/> 
    <corners 
    android:radius="7dp" 
    /> 
    </shape> 
</item> 

</selector> 
2

Điều tôi đã làm được xác định hình dạng và chỉ định dp của mỗi góc.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" android:padding="90dp"> 
<solid android:color="#FFFFFF"/> 
<padding /> 
<corners 
    android:bottomRightRadius="15dp" 
    android:bottomLeftRadius="15dp" 
    android:topLeftRadius="15dp" 
    android:topRightRadius="15dp"/> 

</shape> 

Nếu bạn tăng dp ở mỗi góc, nút này sẽ làm cho nút tròn hơn.

+0

@zabawaba .. Không .. Không hoạt động !! Tôi đã làm điều này cũng !! – Bharath

+0

Bạn đã thử sử dụng một kiểu?Bạn có thể muốn tạo một cái cho một nút và sau đó áp dụng nó cho các nút bao giờ. Tôi đã không thử nó cho các nút trước nhưng tôi biết bạn có thể thêm bộ chọn và thay đổi các khía cạnh khác nhau của một cái nhìn (chiều cao, màu sắc, đó là chọn, hình ảnh, vv) bằng cách sử dụng một phong cách. – zabawaba99

0

Tôi đã thành công khi thực hiện chính xác những gì bạn mô tả. Tôi đã làm như sau:

Trước tiên, tôi đã tạo một lớp mới mở rộng Nút. Trong lớp học này, tôi đã tạo một phương thức có tên là setState():

public void setState (int s) 
{ 
    if (s > 0 && s < 4 &&) 
    { 
     this.state = s; 
     switch (state) 
     { 
      case 1: 
       setBackgroundDrawable (def_gray); 
       break; 

      case 2: 
       setBackgroundDrawable (lt_gray); 
       break; 

      case 3: 
       setBackgroundDrawable (black); 
     } 
    } 
} 

Ba nền có thể vẽ bạn thấy ở trên là các tệp XML mô tả giao diện nút. Chúng hầu như giống nhau, nhưng khác nhau về màu sắc cho mỗi loại. Nút màu xám mặc định được mô tả như sau:

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

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item> 

     <shape> 

      <gradient 
       android:startColor="#333333" 
       android:endColor="#333333" /> 

      <stroke 
       android:width="2dp" 
       android:color="@android:color/white" /> 

      <corners 
       android:radius="5dp" /> 

      <padding 
       android:left="2dp" 
       android:top="2dp" 
       android:right="2dp" 
       android:bottom="2dp" /> 

     </shape> 

    </item> 

</selector> 

Theo như tôi biết, định dạng XML được mong đợi được sử dụng để định cấu hình độ dốc màu trên mặt nút. Vì đó không phải là những gì tôi muốn, tôi đặt cả hai giá trị màu sắc giống nhau và màu nền là nhất quán. Bạn có thể cần phải thử nghiệm một chút với các giá trị màu sắc, nhưng có vẻ như bạn đã có một xử lý trên đó.

Các vấn đề liên quan