UPDATE:正如在评论中指出,“Widget.AppCompat.EditText”是一个AppCompatEditText子类正确的父样式。在我的情况下,真正的问题是我忘记了在我们的主题中为控件的默认样式属性赋值,所以我们的控件没有得到任何样式作为默认值。你怎么能找到的默认样式的窗口小部件(即AppCompatEditText)
但是,这个问题仍然可以使用一个答案,如何正确标识哪个样式用作父级定义自己的默认样式时的子类化标准控件。因此,我也重新命名了它的标题。
因此,我将此事公之于众,希望有人能够回答这个问题,因为它可以帮助任何希望做类似事情的人。
我们正在尝试为整个应用程序中使用的所有AppCompatEditText控件定义一个共同的外观和感觉。因此,我们不是不得不在每次使用时手动应用'样式'属性,而是试图用我们自己的样式替换默认样式。
替换默认样式实际上是很容易的部分。不是要知道我们的风格应该设置什么样的父母风格,所以我们仍然有原始风格的所有方面,我们没有明确地覆盖我们的风格。
挖掘AppCompatEditText的源代码,它显示了默认的样式存储在R.attr.editTextStyle
,但我不知道现在要查看哪些值存储在其中。
实验也没有让我们到任何地方。无论我们迄今为止尝试过什么,我们都完全失去了默认外观。没有下划线,没有背景,没有填充,什么都没有。只是我们设定的值,这意味着它没有选择父母的风格。
我们已经尝试没有成功以下...
<style name="ZinEditText" parent="android:Widget.EditText">
<item name="zinTypeface">light</item>
<item name="android:textSize">@dimen/defaultTextSize</item>
<item name="android:lineSpacingMultiplier">@dimen/defaultLineSpacing</item>
</style>
<style name="ZinEditText" parent="Widget.AppCompat.EditText">
<item name="zinTypeface">light</item>
<item name="android:textSize">@dimen/defaultTextSize</item>
<item name="android:lineSpacingMultiplier">@dimen/defaultLineSpacing</item>
</style>
<style name="ZinEditText" parent="Base.V7.Widget.AppCompat.EditText">
<item name="zinTypeface">light</item>
<item name="android:textSize">@dimen/defaultTextSize</item>
<item name="android:lineSpacingMultiplier">@dimen/defaultLineSpacing</item>
</style>
<style name="ZinEditText" parent="Widget.Holo.EditText">
<item name="zinTypeface">light</item>
<item name="android:textSize">@dimen/defaultTextSize</item>
<item name="android:lineSpacingMultiplier">@dimen/defaultLineSpacing</item>
</style>
正如我所说的,没有以上似乎工作。
那么如何找到真正的父母风格使用?
默认为['Widget.AppCompat.EditText'](https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/V7 /程序兼容性/ RES /价值/ themes_base.xml#223)。你如何设定风格? –
@#$$!我忘了将我们的风格分配给我们的风格属性。你是对的。风格一直在努力。 – MarqueIV
发表你的回答,包括我遗漏的一块,我会将你的标记标记为已接受的标记。比自己回答这个问题或者让它开放更好。另外你得到积分。 – MarqueIV