删除EditText的焦点边框


83

聚焦EditText视图时,如何删除出现的边框?

我需要它,因为该视图在屏幕上的空间很小,但是没有边框就足够了。在仿真器上运行时,会出现橙色边框,在设备上会显示蓝色边框。


我不知道是否有可能...您总是可以将自定义按钮缩小一些。
gnclmorais 2011年

Answers:


188

您是否尝试过将的背景设置EditText为透明颜色?

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

21
"@android:color/transparent"有点不解自明。
Alexander Malakhov

7
"@null"也可以是一种选择
Mangesh

3
这个答案是不正确的,因为它不仅会移除焦点边框,还会移除未聚焦的EditText背景。
JensJensen

@Michael是的,因为十六进制0和00000相同。它仍然为零。
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

有可能的。但是,我不建议您这样做,因为用户已经习惯了某些隐喻,并且您不应更改常规UX。

您可以将不同的样式应用于视图。在您的情况下,听起来像您想要一个看起来像TextView元素的EditText View元素。在这种情况下,您必须根据View元素的状态为EditText指定其他背景。

在所需的layout.xml中,将背景分配给EditText:

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

然后,在可绘制文件夹中创建custom.xml并添加以下内容:

<?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>

这些是EditText View元素的可能状态。通常,您可以使用直接访问Android平台可绘制对象@android:drawable/textfield_default,但是在这种情况下,文本字段可绘制对象是私有的,因此您必须将它们复制到自己的可绘制文件夹中。原始资源可以在SDK安装文件夹中找到ANDROID_HOME\platforms\android-(API LEVEL)\data\res\drawable-(*dpi)\

完成后,您将获得一个EditText,看起来像TextView,但完全没有这些边界。您在模拟器中看到的那些橙色边框是默认的Android drawable。蓝色的是特定于供应商的(可能是三星)。

希望能有所帮助,不要造成太大的混淆。


我将尽快对其进行测试。它适用于Galaxy Tab。
Marcos Vasconcelos

好..这可以工作。但是我不想画所有这些背景。我只需要删除默认边框,这不可能吗?
Marcos Vasconcelos

我发布的示例是从原始实现派生的。EditText边框不是单独绘制的。它是完整的背景图像,根据View元素的当前状态进行设置。在内部,Android平台每次都会设置完整的背景图片。您可以在ANDROID_HOME \ platforms \ android-(API LEVEL)\ data \ res \ drawable-(* dpi)\下在SDK安装中看到九张补丁图像。
MarioB。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.