问题标签 [android-attributes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 我应该为 XML 中的每个元素添加 ID 属性吗?
即使我不引用它们,我是否应该android:id
为我的 XML 布局文件中的每个元素添加一个属性?
我在别处问过,得到了这个答案:
未指定 ID 的视图不会由系统自动保存/恢复其状态。[...] 如果您有一个没有 android:id 的编辑文本,那么如果您旋转屏幕,那么编辑文本中的文本将被清除
所以从这个意义上说,这让我觉得没有必要。
我该怎么做?
android - DatePicker headerTextColor:无法解析属性
我想对DatePicker
. 在平台中attrs.xml
DatePicker
,我们可以看到styleable的以下属性:
虽然我可以参考android:headerBackground
,但出乎意料的是,我无法为android:headerTextColor
属性做到这一点。所以下面的代码styles.xml
:
提示错误,android:headerTextColor
无法解决。
但我可以清楚地看到 Widget.Material.DatePicker
覆盖该属性。有趣的是,这段代码前面有Attributes for new-style DatePicker
注释,这可能会以某种方式导致这种行为的原因。
这种行为的原因可能是什么以及如何覆盖该属性?
在 Android Studio 2.3、minSdkVersion 23、buildToolsVersion 25.0.3、compileSdkVersion 和 targetSdkVersion 23 上运行,缓存和清理项目无效。
正如您在R.attr
docs中看到的那样,一些属性后面有这个文本:
此常量在 API 级别 23 中已弃用。请改用headerTextColor。
这意味着,该属性应该暴露给公共 API,但不知何故它被剥离并且 AAPT 无法访问它。
在错误跟踪器上打开了一个问题。
android - Android“?colorPrimary”与“?attr/colorPrimary”?
我找不到有关以下差异的任何信息:
对比
我读过“?attr”表示当前主题中指定的属性值,但没有“attr”它会给出相同的结果(=我的主题中定义的颜色)。它的行为与其他属性相似吗?
例如:
是否android:background="?attr/selectableItemBackground"
等于android:background="?selectableItemBackground"
?
非常感谢。
android - 无法更改浅色和深色主题的菜单项颜色
我正在尝试通过关注此博客为我的应用程序实现明暗主题
但是在根据主题更改菜单项的情况下,按照上面没有菜单图标只显示它的字符串这是我的attrs.xml代码-
这是我的轻主题风格
<item name="icon_favourite">@drawable/ic_liked_toolbar</item>
这是我的黑暗主题风格
<item name="icon_favourite">@drawable/ic_liked_toolbar_white</item>
这是我的菜单项-
应用所有这些后,我的菜单项的图标不可见,只有它的字符串可见
android - 有没有办法在视图创建期间通过数据绑定读取视图属性?
我正在使用数据绑定,并且正在尝试编写一些设置。我有一个视图,我想通过自定义属性(传入枚举)确定其布局。例如传入Setting.CHECKBOX
或者Setting.SWITCH
应该让我为视图膨胀适当的控件。视图将被定义如下:
有没有办法setting:control
在布局膨胀之前读取该属性?根据设置,我想指定如何为 SettingView 充气。
我知道我可以通过自定义属性/样式来做到这一点,但我想知道它是否可以通过数据绑定来实现。
android - 如何在自定义视图中获取android默认属性
我创建了一个简单的自定义视图,其中包含一个RelativeLayout
和一个EditText
:
我还添加了一些自定义属性res/values/attrs.xml
并在自定义视图构造函数中检索这些属性,一切正常。
现在,我想EditText
在我的自定义视图中检索默认属性,例如我想获取android:text
在我的自定义视图中获取属性。
我的自定义视图类(简化):
如何在不重新声明 text 属性的情况下做到这一点res/values/attrs.xml
?
android - 如何创建基于布局的 XML 友好控件?
我创建了一个自定义控件,它是 LinearLayout 的子类。我还创建了这个控件所基于的布局文件。最后,我定义了我在构造函数中解析的属性以设置我的自定义属性。例如,这些属性之一称为“文本”。
这是我的代码的简化版本(我已经删除了许多其他属性,因此我们可以只关注一个属性“文本”):
首先,类(我们自定义的 RadioButton 版本)...
这是 attrs.xml 文件...
这是“reusable_radiobutton.xml”布局文件(注意:内部 RadioButtonView 是自定义渲染视图,工作正常):
有了上面,我的控件的用户可以简单地将它包含在他们自己的布局文件中,就像这样......
在他们的代码中,使用以下内容,他们可以获得该实例并按照他们的意愿使用它,就像这样......
这按预期工作。
然而,这并不...
它给了我一个警告,但否则会忽略它。
然后我尝试了这个...
虽然这确实实例化了我的控件并且确实通过了“Hello World!” 通过属性到我的属性,实际上没有加载甚至将布局文件关联到我的类,所以屏幕上什么也没有出现!
那么如何基于布局创建自定义视图,其他开发人员可以在他们自己的布局文件中简单地引用它,同时还允许他们设置自定义属性?
希望一切都有意义!:)
注意:Android 文档准确地讨论了我所追求的内容,即此处引用的“复合控件” ,但它们没有给出使用布局来定义复合控件的示例。不过,我觉得这已经很接近了。
android - menu_main.xml 中的属性缺少 Android 命名空间前缀
我是 android 新手,正在关注这个教程 pdf 指南。到目前为止,我还没有发现许多无法修复的错误。
除非我尝试在菜单类型的清单中创建一个文件夹并创建 menu_main.xml。
我得到的属性缺少 android 名称空间前缀和一堆其他错误,例如布局中发现的意外文本。这是我从书中粘贴的代码。到 menu_main.xml
java - 设置属性/属性时可以在 XML 中指定对象吗?
我正在尝试创建一个MultiLinkTextView
类,它允许您在文本中指定几个可单击的“链接”区域,当单击一个时,让它调用一个具有用户定义 ID 的函数来表示该链接。这里已经有几个关于如何在 TextView 中创建可点击链接和跨度的示例,以便涵盖该部分。
然而,这个问题专门关于查看是否可以通过布局文件中的属性定义所需的信息,而不是关于实现链接部分。
我来自 Microsoft 的 XAML 格式,您可以轻松地以声明方式执行此类操作,因为 a) 它们具有真实属性(自动推断其属性)和 b) 它们允许在其 XAML 中构造任何对象,而不仅仅是视图(提供它建在一个有意义的地方。)
我想看看我是否可以在 Android 中做类似的事情:从布局文件中以声明方式在我的对象上设置复杂的属性。
为了促进这种设计,我希望这是可能的。
首先,我们定义一个 LinkInfo 类,它可以通过编程方式创建,也可以通过读取属性在布局文件中创建,如下所示(假设设置了正确的 attrs.xml 文件等):
然后,假设MultiLinkTextView
公开了一个“属性”(在引号中,因为 Android 本身似乎没有属性,只有 getter、setter 和外部属性),它包含这些LinkInfo
对象的集合/数组/列表,下面是我们想要的在 XML 布局中定义它。
请注意,XAML 允许您使用将“ParentType”实例上的“someProperty”设置为标记之间的任何内容的语法来指定复杂的属性。在上面的示例中,这意味着将 LinkInfo 对象数组设置为 LinkInfo 的“属性”(或属性或其他)。
同样,我很确定上述方式在 Android 中是不可能的。但我希望在 Android 中找到某种方法,它可以让我使用声明性语法来设置这样的值,即使上面是错误的。
android - 在属性的格式中(并以颜色为例),“颜色”和“颜色|参考”有什么区别?
TLDR 版本
我明白为什么reference
在设置默认主题时将其用作指向默认样式的属性的格式,但是在定义颜色属性时使用reference|color
与仅使用有何不同?color
您已经可以使用@color/xxx
which 已经是对另一个资源的引用,那么引用是隐式的吗?如果不是,那么其中一个的用例是什么?
完整版本
我一直在遵循最佳实践,使用以下推荐的技术对我们的应用程序的自定义小部件进行主题化。
在 attrs.xml
在styles.xml
最后,在我的小部件的构造函数中,我将R.attr.myWidgetStyle
andR.attr.myOtherWidgetStyle
适当地传递给调用 tosuper
和 tocontext.obtainStyledAttributes
并且我可以根据需要获取定义的颜色。一切都按预期工作。我的控件主题恰当。
但是,我想知道的是我有时会在 attrs.xml 文件中看到这一点......
一切仍然有效,让我摸不着头脑,为什么你要写color|reference
而不是color
. 我已经尝试通过几个属性级联更改,以不同的顺序定义它们以及我能想到的任何其他结果以获得不同的结果,但它们都可以正常工作。
那么有人有解释吗?
更好的是,有人可以发布一个示例,显示和之间的不同行为color
,color|reference
因为到目前为止,我还没有找到一个。