我正在为我的应用程序使用appcompat主题。需要知道我如何显示下划线到微调器。它只是显示锚。我尝试使用android:background设置下划线,但它会使锚点消失。
答案 0 :(得分:119)
更新您的支持库并使用XML
请将此样式添加到您的Spinner
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
答案 1 :(得分:7)
这是在appcompat主题中更改微调器和下划线颜色的hacky(而不是完美)方法。主要是我定制了Android支持库图像和xml文件来改变颜色。
1)去支持图书馆包并复制2张图片(或从这篇文章的底部下载我的自定义)
/your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_spinner_mtrl_am_alpha.9.png
和
/your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_textfield_default_mtrl_alpha.9.png
2)制作这些图像的副本
3)改变abc_spinner_mtrl_am_alpha.9.png的颜色(警告:保留黑色边框,它是9补丁)
4)改变abc_textfield_default_mtrl_alpha.9.png第二个底线的颜色(你可以在下面附上的小图中看到)
5)保存并将文件移动到项目drawables
6)创建bottom_line_color.xml drawable:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-6dp" android:left="-6dp" android:right="-6dp">
<shape>
<stroke android:color="@color/brown" android:width="6dp"/>
</shape>
</item>
7)创建spinner_bottom_line.xml
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_control_inset_material"
android:insetTop="@dimen/abc_control_inset_material"
android:insetBottom="@dimen/abc_control_inset_material"
android:insetRight="@dimen/abc_control_inset_material">
<selector>
<item android:state_checked="false" android:state_pressed="false">
<layer-list>
<item android:drawable="@drawable/my_custom_abc_textfield_default_mtrl_alpha" />
<item android:drawable="@drawable/my_custom_abc_spinner_mtrl_am_alpha" />
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable="@drawable/my_custom_abc_textfield_default_mtrl_alpha" />
<item android:drawable="@drawable/my_custom_abc_spinner_mtrl_am_alpha" />
</layer-list>
</item>
</selector>
</inset>
P.S。我无法实现与默认微调器相同的视觉样式(如下所示的视觉变化)。如果您开始使用此自定义微调器主题,则应在所有项目中使用它。
所以添加到values / styles.xml
<style name="My.Spinner.Style" parent="Base.Widget.AppCompat.Spinner.Underlined">
<item name="android:background">@drawable/spinner_bottom_line</item>
</style>
并在这样的应用程序中使用它:
<Spinner
android:id="@+id/account_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/My.Spinner.Style"
/>
重要的: 您应该调整微调器的大小并放置到各种drawables文件夹。您可以在我上面显示的相同路径中找到尺寸。 几种流行的尺寸:
drawables-mdpi 20x26
drawables-hdpi 29x38
drawables-xhdpi 38x50
drawables-xxhdpi 74x98
您可以从此处拍摄我的自定义图片:
my_custom_abc_spinner_mtrl_am_alpha:
my_custom_abc_textfield_default_mtrl_alpha:
Spinner示例是(xxhdpi),line是mdpi(因为我们在各种可绘制文件夹中不需要各种行,所以我们只能有1行)。
视觉差异(来自android studio xml预览窗口)如下所示:
第一行是我的自定义下划线微调器,第二行是默认的Base.Widget.AppCompat.Spinner.Underlined
答案 2 :(得分:4)
UserControl
========================
布局中SELECT * FROM (SELECT logid, logdetails,logdatetime, '1' as identifier
FROM tbl_product_log
UNION ALL
SELECT logid, logdetails,logdatetime, '2' as identifier FROM tbl_user_log
UNION ALL
SELECT logid, logdetails,logdatetime, '3' as identifier FROM tbl_customer_log
UNION ALL
SELECT logid, logdetails,logdatetime, '4' as identifier FROM tbl_vendor_log
UNION ALL
SELECT logid, logdetails,logdatetime, '5' as identifier FROM tbl_quotations_logs ) as a
-- WHERE indentifier = '' -- in here you can put here to filter what report you wanted to appear
ORDER BY logid -- Order it by Logid
LIMIT 20 -- change the limit
===============================================
<button data-sql="SELECT ep.PROJECTID,ep.PROJECTNAME FROM euser eu,eproject
ep WHERE eu.projectid = ep.projectid AND eu.username = :USERNAME"
data-sqlparams="USERNAME" data-logintype="otp" ng-click="customLogin()">
Login
</button>
答案 3 :(得分:2)
应用style="@style/Base.Widget.AppCompat.Spinner.Underlined"
并没有什么区别。然后将android:backgroundTint
和android:backgroundTintMode
交给了spinner并成功了。
<Spinner
android:id="@+id/spBookingType"
android:spinnerMode="dropdown"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
android:backgroundTint="#ff000000"
android:backgroundTintMode="src_in" />