如何在Android NativeScript应用中更改TextView底部强调颜色

7

我目前正在尝试找出如何将文本输入框底部边框的颜色从默认的蓝色更改。我已经尝试使用border-color、color和background-color属性,但是没有任何一个对输入框产生影响。这是我用于输入框的XML代码<TextField text="{{ username }}" cssClass="username" android:row="1"/>


这也是我寻找解决方案的原因。希望有人能回答这个问题。 - Pamungkas Jayuda
2个回答

12

为了继续@Bradley-Gore的回答,这里是Android文档,其中突出显示需要设置的颜色。这是来自Android文档的另一个很好的链接,介绍了与样式/主题兼容性的内容。

你要找的重要部分是:

  <!--   theme UI controls like checkboxes and text fields -->
  <item name="android:colorAccent">@color/accent</item>

从 NativeScript 1.6+ 版本开始,您需要在 App_Resources/Android/ 中创建文件,而在 NativeScript 1.6 之前,您需要在 platforms/android/ 中进行这些更改。更改的原因是为了在需要删除平台并重新添加以修复任何构建缓存/gradle问题等时保留这些类型的更改。

因此,要简单设置主要、primaryDark 和 accent 颜色,请在 App_Resources/Android 中创建 valuesvalues-v21 文件夹。

App_Resources/Android/values/colors.xml

 <?xml version="1.0" encoding="utf-8"?>
 <resources>
   <color name="ns_primary">#3489db</color>
   <color name="ns_primaryDark">#336699</color>
   <color name="ns_accent">#ff4081</color>
 </resources>

App_Resources/Android/values-v21/colors.xml

 <?xml version="1.0" encoding="utf-8"?>
  <resources>
    <color name="ns_accent">#ff4081</color>
  </resources>

如果您创建了一个NativeScript项目并构建了Android应用程序,导航到platforms/android,您会看到CLI生成了这些文件,这是NativeScript默认样式应用程序的方式,这就是为什么它在primary、primaryDark、accent值之前使用前缀ns_的原因。
还有一些其他可能对您开始学习Android和NativeScript有所帮助的东西,附带的.gif文件。这来自于Android文档,大多数样式都可以通过编程或通过设置.xml文件进行设置,@bradley-gore提到的颜色也是如此,但最好将项目分开:)在.gif中,我只突出显示了android.widget.TextView类,并向下滚动以查找XML属性,如果您正在通过XML构建本机Android UI,则可以设置这些属性。这些是您可以通过样式设置的内容,如果有匹配的方法,则会在xml属性旁边看到代码方法。希望这解释了一切,并为那些进入NativeScript的人提供了良好的学习体验。我可能会博客 :)好问题。

enter image description here


谢谢,这个完美地解决了问题,只有一个小问题,第一个代码块上面的标题应该是 App_Resources/Android/values/colors.xml 对吧? - Zach

1

如果您想要在Android上使用TextInputLayout(漂亮的浮动标签、错误消息等),我有一个插件可以帮助您:https://www.npmjs.com/package/nativescript-textinputlayout

即使您不想使用该插件,或者由于我尚未在其中添加iOS支持而无法使用它:p,则相同的样式机制也会有所帮助。在插件的演示应用程序中,我正在为Android使用一个App_Resource,为一些在NativeScript中无法定义的内容定义样式规则:

<style name="DemoAppTheme" parent="AppTheme">
    <item name="colorControlNormal">@color/darkBlue</item>
    <item name="colorControlActivated">@color/medBlue</item>
    <item name="colorControlHighlight">@color/lightBlue</item>
    <item name="android:textColorPrimary">@color/darkBlue</item>
    <item name="android:textColorHint">@color/medBlue</item>
</style>

具体来说,这前两个项目将对您有所帮助,因为它涵盖了普通状态和激活状态下控件的标准颜色。目前我不太确定高亮状态和激活状态之间的区别。看一下我的插件演示应用程序如何连接这些内容,你就会明白了。您需要查看app/App_Resources/Android/values/(appColors | appStyles).xmlapp/App_Resources/Android/AndroidManifest.xml


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接