具有自定义颜色属性的 TextView 不会在布局预览中呈现

Pav*_*ley 3 android android-theme android-styles

TextView具有自定义颜色属性的布局预览中不会呈现。

我已经attr.xml在值文件夹中定义了属性。

<attr name="secondary_text_color" format="color"/> 
Run Code Online (Sandbox Code Playgroud)

并在 xml 中覆盖此颜色style以实现深色和浅色主题。

里面TextView

android:textColor="?attr/secondary_text_color"
Run Code Online (Sandbox Code Playgroud)

布局预览显示错误,但应用程序按预期工作。

java.lang.NullPointerException 在 android.widget.TextView.updateTextColors(TextView.java:5773) 在 android.widget.TextView.setHintTextColor(TextView.java:5047) 在 android.widget.TextView.applyTextAppearance(TextView.java:4053)在 android.widget.TextView.(TextView.java:1604) 在 android.widget.TextView.(TextView.java:968) 在 android.widget.TextView.(TextView.java:964) 在 sun.reflect.GenerateConstructorAccessor273.newInstance (未知来源)在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 android.view.LayoutInflater.createView(LayoutInflater.java:854) )在 android.view.LayoutInflater.createView(LayoutInflater.java:776) 在 android.view.BridgeInflater.onCreateView(BridgeInflater.java:129) 在 android.view.LayoutInflater.onCreateView(LayoutInflater.java:930) 在 android.view .LayoutInflater.onCreateView(LayoutInflater.java:950) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1004) 在 android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:308) 在 android.view.LayoutInflater.createViewFromTag( LayoutInflater.java:961)在android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1123)在android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)在android.view.LayoutInflater.rInflate(LayoutInflater.java:1097) )在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:682) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:501) 在 com.android .layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:353) 在 com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:404) 在 com.android.tools.idea.layoutlib.LayoutLibrary.createSession (LayoutLibrary.java:141) 在 com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:713) 在 com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:第844章 844 (ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

Pav*_*ley 9

您应该在布局预览控制面板中将默认主题更改为所需的主题,在本例中为浅色或深色主题。 在此输入图像描述

或者,在清单application标记中将应用程序主题设置为您所需的默认主题:

android:theme="@style/MyTheme"