2011-11-28 8 views
7

Tôi nhận ra đây là một điều kỳ lạ để làm, nhưng tôi có một nút cần phải xem như EditText nhưng vẫn hoạt động như một nut bâm. bố trí XML của tôi hiện trông như thế này:Tạo kiểu cho Nút trông giống như EditText (nhưng vẫn hoạt động như một Nút)

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="?android:attr/editTextStyle" /> 

Điều đó cho nó sự xuất hiện của một EditText, mà còn messes với hành vi một chút bằng cách ngăn chặn các sự kiện onClick khỏi bị sa thải trừ nút có tập trung (có hiệu quả làm cho nó yêu cầu hai lần nhấp chuột). Có cách nào để giữ phong cách mà không thay đổi hành vi của nút không?

Tôi đã nghĩ đến việc tạo nền 9 bản vá giống như EditText, nhưng với rất nhiều phiên bản và giao diện Android khác nhau, tôi muốn sử dụng kiểu hệ thống nếu có thể.

Trả lời

28

Làm thế nào về một EditText hoạt động giống như một nút?

<EditText android:id="@+id/Edit" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="true"/> 

Bạn cũng có thể xác định OnClickListener cho nó. Và nó sẽ không tập trung.

+1

Tôi sẽ làm điều này nếu đó là tôi. – dmon

+1

Cảm ơn, đã có nhu cầu tương tự ... đó là những gì tôi gọi là "bên ngoài hộp". – Shahar

1

Nếu nó hoàn toàn cần phải là một nút, bạn có thể thêm một người nghe tập trung vào nút của bạn kích hoạt onclick khi nút nhận được tiêu điểm.

weirdoButton.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View view, boolean hasFocus) { 
    if(hasFocus) { 
     weirdoButton.performClick(); 
    } 
    } 
}); 

Nhược điểm là nhấp chuột sẽ kích hoạt khi nút nhận tiêu điểm qua bi xoay hoặc d-pad. Làm cho tập trung không thể tập trung vào tệp bố cục:

<Button 
    android:id="@+id/weirdoButton" 
    android:layout_width="match_parent" 
    android:layout_height="50dip" 
    android:focusable="false" 
    style="?android:attr/editTextStyle" /> 
0

Câu trả lời được chấp nhận cho phép bạn chỉnh sửa EditText dưới dạng nút nhưng tôi thấy có sự khác biệt trong đó; khi bạn nhấn lâu vào nó, nó cho phép bạn dán văn bản vào đó là khủng khiếp về mặt UX.

Đây là những gì tôi đã áp dụng thay vào đó để tạo kiểu cho nó dưới dạng EditText.

<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:textSize="16sp" 
    android:focusable="false" 
    android:id="@+id/btnAddMember" 
    style="?android:attr/editTextStyle" 
    android:focusableInTouchMode="false" 
    android:clickable="true" 
    android:hint="Button Content"/>