这样的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"
/>
Run Code Online (Sandbox Code Playgroud)
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"
/>
Run Code Online (Sandbox Code Playgroud)
alt text http://i765.photobucket.com/albums/xx299/trieutrinhtrinh/edittext2.jpg
EditText背景会发生什么?如何使EditText保持默认样式?
Ngu*_*Dat 16
这里有2个改变我之前调查的EditText背景的解决方案,希望它可以帮到你:
★ 问题:当将背景设置为EditText时,它看起来很糟糕
★ Analysys:EditText使用九路图像作为背景.他们使用选择器根据EditText的当前状态更改背景图像(启用/聚焦/按,默认)
★ 解决这个问题有两种解决方案,每种解决方案都有优势和劣势:
★ 解决方案1:自己创建自定义EditText(按照此解决方案,我们可以自由更改EditText的视图.
▲ 优点:您可以自由渲染EditText视图,按照您的目的,无需创建Ninepath图像作为Android EditText的当前工具.(您必须在EditText中提供IF以根据EditText的状态(启用/聚焦....)平滑地更改背景.如果您想要更改背景颜色或添加更多颜色,可以重复使用和更多自定义
▼ 缺点:需要花费很多精力来创建和测试自定义EditText.(我选择解决方案2所以没有解决方案1的演示工具,如果有任何人遵循此解决方案随时与我们分享您的演示代码)
★ Solution2:使用选择器作为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>
Run Code Online (Sandbox Code Playgroud)
❷在EditText xml设置选择器上:
<EditText
...
android:background="@layout/**edittext_selector**"
...
</EditText>
Run Code Online (Sandbox Code Playgroud)
★ 注意:
●在这个演示代码中,我删除了一些视图状态的行为,参考android工具的详细行为(焦点/非焦点,启用/禁用,按,选择...)
●注意选择器中项目的顺序.选择器xml文件中项目的差异顺序将有不同的背景.
▲ 优点:简单,只需创建选择器并将选择器设置为背景,如果您想要更多颜色,只需设置更多选择器然后按代码设置.
▼ 缺点:努力为选择器创建九路图像,如果您想要更改颜色或添加更多颜色,您必须创建更多图像和选择器.所以它不如Solution1强大
这是我对图像处理程序背景的调查,所以它可能是对还是错,如果您有更好的解决方案或解释,请随时与我们分享.
我实施了遵循解决方案2并且它有效.
小智 11
我的解决方案是一行代码:
<your-widget-component-that-has-a-background-color>.getBackground().setColorFilter(Color.<your-desired-color>, PorterDuff.Mode.MULTIPLY);).
Run Code Online (Sandbox Code Playgroud)
它像这样崩溃:
具有图像编辑软件知识的人可能会识别该模式.每种模式对颜色如何应用于背景图像具有一定的影响.要简单地"覆盖"图像的颜色,同时保留其渐变,边框等,请使用MULTIPLY.
| 归档时间: |
|
| 查看次数: |
38198 次 |
| 最近记录: |