我有像这样的EditText背景的问题
<EditText
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="35sp"
android:singleLine="true"
android:layout_marginLeft="5px"
android:layout_marginRight="5px"
android:layout_marginTop="5px"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
alt text http://i765.photobucket.com/albums/xx299/trieutrinhtrinh/edittext.jpg
尝试设置背景后,看起来更糟
<EditText
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="35sp"
android:singleLine="true"
android:layout_marginLeft="5px"
android:layout_marginRight="5px"
android:layout_marginTop="5px"
android:textAppearance="?android:attr/textAppearanceSmall"
android:background="#ffffff"
/>
alt text http://i765.photobucket.com/albums/xx299/trieutrinhtrinh/edittext2.jpg
EditText背景会发生什么?如何使EditText保持默认样式?
答案 0 :(得分:16)
这是2个解决方案来改变我之前调查过的EditText的背景,希望它可以帮到你:
★的问题强>: 将Background设置为EditText时,它看起来很糟糕
★的观强>: EditText使用九路径图像作为背景。他们使用选择器根据EditText的当前状态(启用/聚焦/按下,默认)
更改背景图像★解决这个问题有两种解决方案,每种解决方案都有优势和劣势:
★的解决方法1 强>: 自己创建自定义EditText(按照此解决方案,我们可以自由更改EditText的视图。
▲的优势强>: 您自由渲染的EditText视图符合您的目的,无需创建Ninepath图像作为Android EditText的当前工具。 (您必须在EditText中提供IF以根据EditText的状态(启用/聚焦....)平滑地更改背景 如果您想要更改背景颜色或添加更多颜色
,可以重复使用并进行更多自定义▼的缺点强>: 花费很多精力来创建和测试自定义EditText。 (我选择解决方案2所以没有解决方案1的演示工具,如果有任何人遵循此解决方案随时与我们分享您的演示代码)
★的溶液2 强>: 使用的选择器作为Android工具
❶创建xml文件调用 edittext_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edittext_selector">
<!-- Image display in background in select state -->
<item
android:state_pressed="true"
android:drawable="@drawable/your_ninepath_image">
</item>
<!-- Image display in background in select state -->
<item
android:state_enabled="true"
android:state_focused="true"
android:drawable="@drawable/your_ninepath_image">
</item>
<!-- Default state -->
<item android:state_enabled="true"
android:drawable="@drawable/your_ninepath_image">
</item>
</selector>
❷OnEditText xml set selector:
<EditText
...
android:background="@layout/**edittext_selector**"
...
</EditText>
★的注意:
●在这个演示代码中,我删除了一些视图状态的行为,请参阅android工具的详细行为(焦点/非焦点,启用/禁用,按,选择...)
●照顾选择器中的项目顺序。选择器xml文件中项目的差异顺序将有不同的背景。
▲的优势强>: 简单,只需创建选择器并将选择器设置为背景,如果您想要更多颜色,只需设置更多选择器,然后按代码设置。
▼的缺点强>: 努力为选择器创建九路径图像,如果您想要更改颜色或添加更多颜色,您必须创建更多图像和选择器。因此它不如Solution1
强大这是我对图像处理程序背景的调查,所以它可能是对还是错,如果您有更好的解决方案或解释,请随时与我们分享。
我是按照解决方案2实施的,但它确实有效。
答案 1 :(得分:11)
我的解决方案是一行代码:
<your-widget-component-that-has-a-background-color>.getBackground().setColorFilter(Color.<your-desired-color>, PorterDuff.Mode.MULTIPLY);).
它像这样崩溃:
具有图像编辑软件知识的人可能会识别该模式。每种模式对颜色如何应用于背景图像具有一定的影响。要简单地“覆盖”图像的颜色,同时保留其渐变,边框等,请使用MULTIPLY
。
答案 2 :(得分:4)
如果您将EditText背景设置为一种颜色,您将有效地抑制Android的默认背景probably a Nine Patch,但不仅仅是简单的颜色。结果 - 您将获得一个最简单的EditText形式 - 一个方框。这里有点过时list of built-in drawables给你一些想法
答案 3 :(得分:4)
如果您想在不改变背景图像的情况下即时编辑Android背景的颜色,请尝试以下操作:(它可能不是最佳解决方案,但它有效):
YourEditText.getBackground().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.MULTIPLY);
答案 4 :(得分:3)
您无需创建图像。你可以使用android系统中的内置图像。所以在xml中编辑你的EditText如下: -
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="10dp"
android:hint="@string/campaign_message"
android:inputType="textMultiLine"
android:background="@android:drawable/editbox_background_normal"
android:minHeight="80dp" >
</EditText>
请注意以下一行:android:background="@android:drawable/editbox_background_normal"
答案 5 :(得分:2)
我认为您应该更改背景颜色,而不是背景。因为它使用的是xml自定义形状。
用作背景的drawable。这可以是对完全可绘制资源的引用(例如PNG图像,9补丁,XML状态列表描述等),也可以是纯色,例如#ff000000
(黑色)。
可以是@[+][package:]type:name
形式的其他资源的引用,也可以是?[package:][type:]nam
e形式的主题属性的引用。
可以是#rgb
,#argb
,#rrggbb
或#aarrggbb
形式的颜色值。
答案 6 :(得分:1)
如果要设置EditText的样式,请查看http://www.androidworks.com/changing-the-android-edittext-ui-widget。
答案 7 :(得分:0)
我必须使用SRC_ATOP才能为我工作
mEditText.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);