我使用TextInputLayout作为容器来保存国家/地区代码和电话号码。我有这个容器的自定义样式。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/signin_inputlayout_mobile"
style="@style/UserAuthField">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Spinner
android:layout_width="0dp"
android:layout_weight="22"
android:layout_height="wrap_content"
style="@style/region_spinner"
android:id="@+id/spinner"
android:prompt="@string/Auth_DialCode">
</Spinner>
<EditText
android:layout_width="0dp"
android:layout_weight="78"
style="@style/UserAuthField"
android:inputType="number"
android:id="@+id/usr_mobile_uname_login"
android:hint="@string/Auth_Phone"/>
</LinearLayout></android.support.design.widget.TextInputLayout>
以下是风格:
<style name="UserAuthField">
<item name="android:background">@drawable/etborder</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#333333</item>
<item name="android:textColorHint">#757575</item>
<item name="android:paddingBottom">4dp</item>
<item name="android:paddingTop">8dp</item>
</style>
这是图层列表:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:bottom="1dp" android:left="-3dp" android:right="-3dp" android:top="-3dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#00FFFFFF"/>
</shape>
</item>
</layer-list>
当我尝试对此设置错误时,我收到以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setBackgroundTintList(android.content.res.ColorStateList)' on a null object reference
仅供参考,同样的策略早些时候有效,但在这种情况下,似乎有点遗漏。无法弄清楚为什么?!
答案 0 :(得分:0)
我犯的最大错误是在布局的根元素的定义中:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ripple="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
**tools:context="com.viven.android.kahaniya.ActivitySetup"**
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
据我所知this answer,要使样式工作,必须使用本地上下文而不是应用程序级上下文来定义它们。
现在,我仍然不完全明白这意味着什么。我会在上面阅读更多内容,但如果您有其他信息,请分享。