没有使用 style 组件情况
<View android:background="#FF0000" android:layout_width="match_parent" android:layout_height="match_parent"/>
使用 style 组件情况
<View android:layout_width="match_parent" android:layout_height="match_parent"/>
<style name="myStyle"> <item name="android:background"> @color/colorAccent </item> </style>
这么做有什么好处呢,我们看一看我们在 web 开发时,也有着同样的情况。没有使用 style 的情况就相当于我们把样式写入 html 标签,而 style 就相当于我们把样式定义 css 样式表中,然后在 html 使用 css 样式。好处就是后者复用性更高,我们可以通过 style 将同样样式应用到多个组件。
想象一下,我们计算机有很多 button,我们可以定义 style 来应用到每一个 button,这样一旦要修改样式我们就无需修改每一个 button,而只需要修改 style 就可以了。
不适合应用 style 的情况
<TextView android:id="@+id/title" android:textColor="@color/colorAccent" android:textColorHint="@color/colorPrimary" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/body" android:textColor="@color/colorAccent" android:textColorHint="@color/colorPrimary" android:layout_width="match_parent" android:layout_height="wrap_content" />
上面示例,我们很容易找出两个textView 共同的样式
android:textColor="@color/colorAccent" android:textColorHint="@color/colorPrimary"
不过通过 id 分别是 body 和 title 我们了解到这是页面标题和正文两部分内容,由于功能不同,这样不适合我们将同样内容抽取出到 style。
Android studio 提供了提取组件样式来作为 style 使用功能,这样大大地方便了开发人员。在设计设图中选择一个要提取 style 的组件,然后右键单击,在弹出菜单中选择 Refactor 然后选择 Extract Style... ,
001.JPG
完成上面操作,会看到一个 Extract Android Style 对话中,显示了该组件所有的可以提取属性。
002.JPG
我们可以选择要提取到 style 的属性,然后 style name 输入一个 style 名称这样单击 OK 就完成提取
003.JPG
这样我们在 style.xml 文件中就可以看到生成的样式。
<style name="myTextStyle"> <item name="android:textColor">@color/colorAccent</item> <item name="android:textColorHint">@color/colorPrimary</item> </style>
我们可以通过一个例子帮助你理解,其实这也没什么不好理解的。
static final int NUM_COLUNM = 3;static final int NUM_RETRIES = 3;
这里定义了两个静态变量,NUM_COLUMN 表示列表的列数,而 NUM_RETRIES 表示我们进行网络请求通常尝试次数
// static final int NUM_COLUNM = 3;// static final int NUM_RETRIES = 3;static final int NUM_THREE = 3
作者:zidea
链接:https://www.jianshu.com/p/b0de50721c4d