Xóa đường viền tiêu điểm của EditText


83

Làm cách nào để loại bỏ đường viền xuất hiện khi lấy nét một Dạng xem EditText?

Tôi cần nó vì chế độ xem này có ít không gian trên màn hình, nhưng không có viền thì vẫn đủ. Khi chạy trên Trình giả lập, đường viền màu cam xuất hiện, trên Thiết bị có đường viền màu xanh lam.


Tôi không biết liệu có thể không ... Bạn luôn có thể tạo các nút tùy chỉnh của mình, nhỏ hơn một chút.
gnclmorais

Câu trả lời:


188

Bạn đã thử đặt nền của cái EditTextthành màu trong suốt chưa?

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" 
android:background="#00000000"
/>

21
"@android:color/transparent"là tự giải thích hơn một chút.
Alexander Malakhov

7
"@null"cũng có thể là một lựa chọn
Mangesh

3
câu trả lời này không đúng, vì nó không chỉ loại bỏ đường viền tiêu điểm mà còn xóa nền EditText không được tiêu điểm.
JensJensen

@Michael có, vì hex 0 và 00000 giống nhau. nó vẫn bằng không.
Brill Pappin

39
<EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:background="@android:drawable/editbox_background_normal"                 

 />

12

Điều đó là có thể. Tuy nhiên, tôi không khuyên bạn nên sử dụng nó vì người dùng đã quen với một số phép ẩn dụ và bạn không nên thay đổi UX chung.

Bạn có thể áp dụng các phong cách khác nhau cho chế độ xem của mình. Trong trường hợp của bạn, có vẻ như bạn muốn một phần tử EditText View trông giống như một phần tử TextView. Trong trường hợp này, bạn sẽ phải chỉ định các nền khác cho EditText tùy thuộc vào trạng thái của phần tử View.

Trong layout.xml mong muốn của mình, bạn chỉ định nền cho EditText của mình:

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" android:background="@drawable/custom"
/>

Sau đó, bạn tạo custom.xml trong thư mục có thể vẽ của mình và thêm những thứ sau:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_window_focused="false" android:state_enabled="true"
    android:drawable="@drawable/textfield_default" />
  <item android:state_window_focused="false" android:state_enabled="false"
    android:drawable="@drawable/textfield_disabled" />
  <item android:state_pressed="true" android:drawable="@drawable/textfield_default" />
  <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_default" />
  <item android:state_enabled="true" android:drawable="@drawable/textfield_default" />
  <item android:state_focused="true" android:drawable="@drawable/textfield_disabled" />
  <item android:drawable="@drawable/textfield_disabled" />
</selector>

Đó là những trạng thái có thể có của phần tử EditText View của bạn. Thông thường, bạn có thể truy cập trực tiếp các tệp có thể kéo của nền tảng Android bằng cách sử dụng @android:drawable/textfield_default, nhưng trong trường hợp này, các tệp có thể kéo của trường văn bản là riêng tư nên bạn phải sao chép chúng vào thư mục có thể kéo của riêng mình. Các tài nguyên gốc có thể được tìm thấy trong thư mục cài đặt SDK của bạn tại ANDROID_HOME\platforms\android-(API LEVEL)\data\res\drawable-(*dpi)\.

Sau khi hoàn tất, bạn sẽ có một EditText trông giống như TextView nhưng hoàn toàn không có các đường viền đó. Những đường viền màu cam mà bạn nhìn thấy trong trình giả lập là những phần có thể kéo mặc định của Android. Các màu xanh lam là dành riêng cho nhà cung cấp (có thể là Samsung).

Hy vọng rằng đã giúp và không nhầm lẫn nhiều như vậy.


Tôi sẽ kiểm tra nó sớm. Và nó dành cho Galaxy Tab.
Marcos Vasconcelos

tốt .. điều này có thể hoạt động. Nhưng tôi không muốn vẽ tất cả những hình nền đó. Tôi chỉ cần xóa đường viền của Đường viền mặc định, điều này không thể thực hiện được?
Marcos Vasconcelos

Ví dụ mà tôi đã đăng là một bắt nguồn từ việc triển khai ban đầu. Đường viền EditText không được vẽ riêng lẻ. Nó là một hình nền hoàn chỉnh được đặt tùy thuộc vào trạng thái hiện tại của phần tử View. Bên trong nền tảng Android luôn đặt một hình nền hoàn chỉnh. Bạn có thể xem hình ảnh chín bản vá trong cài đặt SDK của mình tại ANDROID_HOME \ platform \ android- (API LEVEL) \ data \ res \ drawable - (* dpi) \.
MarioB.

6

Đây là giải pháp nhanh nhất:

<EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:background="#00000000"                 

 />

0

Bạn có thể giữ màu nền trong suốt để xóa đường viền EditText trên tiêu điểm.

Phương pháp 1

<EditText 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
/>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.