Android中实现封装通用样式
例如我们的输入框,很多地方都要用到相同的样式,每次都写,太麻烦而且臃肿了。
- 在themes文件中进行设置,其中EditText.SingleLine,表示继承前面的样式后,继续设置。
<!--多行输入框样式,只有底部边框-->
<style name="EditText">
<!--图标到内容的间距-->
<item name="android:drawablePadding">@dimen/d10</item>
<item name="android:paddingLeft">@dimen/d10</item>
<item name="android:paddingRight">@dimen/d10</item>
<item name="android:paddingTop">@dimen/d13</item>
<item name="android:paddingBottom">@dimen/d13</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">?attr/colorOnSurface</item>
<item name="android:textSize">@dimen/s16</item>
<!-- 移除背景,包括可能的下划线 -->
<!-- <item name="android:background">@null</item>-->
<!-- <item name="android:background">@drawable/selector_edit_text</item>-->
</style>
<!--单行输入框-->
<style name="EditText.SingleLine">
<!--最大显示一行-->
<item name="android:maxLines">1</item>
<item name="android:layout_height">@dimen/d50</item>
<item name="android:paddingTop">0dp</item>
<item name="android:paddingBottom">0dp</item>
<item name="android:layout_marginTop">@dimen/padding_small</item>
</style>
<!--单行输入框,圆角边框-->
<style name="EditText.SingleLine.Border">
<item name="android:background">@drawable/selector_edit_text_border</item>
<item name="android:layout_marginTop">@dimen/padding_large</item>
</style>
- 使用style进行调用
<EditText
android:id="@+id/password"
style="@style/EditText.SingleLine"
android:hint="@string/enter_password"
android:inputType="textPassword"
android:maxLength="15"
/>
这样我们就可以完成复用了,优化页面逻辑结构。