我试图理解为什么View
的背景可能 null 以及这有什么意义。 是否应该至少存在从父视图或其他东西继承的默认背景(即透明)?
例如,省略了以下TextView
的背景属性,这导致Background
(getBackground()
) null
<TextView
android:id="@+id/null_bg_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!--android:background="@color/black"-->
TextView tv = v.FindViewById<TextView>(Resource.Id.null_bg_tv);
tv.Background.SetTintList(_csl); // null exception
更新
对象转储的比较显示它们只有少数几个字段
未指定背景(android:background =“@ null”)
背景=
HasOverlappingRendering = False
IsOpaque =假
机器人:背景= “@彩色/黑白”
Background=android.graphics.drawable.ColorDrawable@5c3246d
HasOverlappingRendering = True
IsOpaque =真
答案 0 :(得分:0)
Applying Styles and Themes to the UI
有几种方法可以设置样式:
- 通过将样式属性添加到布局的XML中的View元素,到单个视图。
- 通过将样式资源标识符传递给View构造函数,向单个视图。这适用于定位到Android 5.0(API级别21)或更高级别的应用。
- 或者,通过将android:theme属性添加到Android清单中的or元素,整个活动或应用。
将样式应用于布局中的单个视图时,样式定义的属性仅应用于该视图。如果样式应用于ViewGroup,则子View视图元素不会继承样式属性;只有您直接应用该样式的元素才会应用其属性。但是,您可以通过将样式应用为主题来应用样式以使其适用于所有View元素。