未在布局

时间:2017-10-31 18:35:30

标签: android

我试图理解为什么View的背景可能 null 以及这有什么意义。 是否应该至少存在从父视图或其他东西继承的默认背景(即透明)?

例如,省略了以下TextView的背景属性,这导致BackgroundgetBackground() 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 =真

1 个答案:

答案 0 :(得分:0)

  

Applying Styles and Themes to the UI

  有几种方法可以设置样式:

     
      
  • 通过将样式属性添加到布局的XML中的View元素,到单个视图。
  •   
  • 通过将样式资源标识符传递给View构造函数,向单个视图。这适用于定位到Android 5.0(API级别21)或更高级别的应用。
  •   
  • 或者,通过将android:theme属性添加到Android清单中的or元素,整个活动或应用。
  •   
     

将样式应用于布局中的单个视图时,样式定义的属性仅应用于该视图。如果样式应用于ViewGroup,则子View视图元素不会继承样式属性;只有您直接应用该样式的元素才会应用其属性。但是,您可以通过将样式应用为主题来应用样式以使其适用于所有View元素。