clq
浏览(616) -
2020-11-10 15:10:27 发表
编辑
关键字: android_dev_self_book
[2020-11-10 16:34:26 最后更新]
[目录位置未定]手工设置控件背景色和边框 说是 ide 安卓和 ios 的界面设计器其实 bug 较多。ios 就不吐槽了,安卓的在 asd 中好了很多,但有时候还是很困难。最后折腾好久后我最终选择 ide 结合手工编写 xml 的方式修改界面,会省很多事。用 ide 画个大概,然后直接改 xml ,好在这方面安卓比 ios 好很多,基本上没出过什么大问题。 我强烈建议大家手写各种对齐代码。这里先简单介绍一下对按钮控件的属性修改。 首先是它的目录藏得很深,一般在 \src\main\res\layout 这样的位置。是纯 xml 与 java 代码无关,直接把它当作 html/css 编辑就好了。 背景色 android:background="#00ff0000" 字体颜色 android:textColor="#ffffff" 设置边框就没那么好运了,一般要上什么 drawable 。我很讨厌这个反人类的东西。所以我是不用 drawable 的。而且用这种思想编程你会觉得和其它开发语言格格不入,我更倾向于用 h5 的方法用 div 拼凑出需要的界面。 所以我的做法是叠加了个自定义的 android.view.View 来画出它的边框,然后将其位置于控件“关联”起来。 对于大家来说自己写或者是维护这个类太什么了一点,变通的方法不用也可以。直接用 android.view.View 然后设置它的 android:background="#cccccc" 背景色就可以了。本来是把这个标准 view 做父控件更好的,不过不知为什么设计器不允许,具体原因我就没去研究了。变通方法是将 view 与控件做成同级的界面元素。用以下属性定义它们的相对位置: android:layout_marginLeft="8dp" android:layout_marginRight="8dp" 以上表示与关联控件的边距是多少,类似的还有另外两个属性 layout_marginTop, layout_marginBottom (还有更难理解的 layout_marginStart layout_marginEnd ,搞不懂的话全部设置也是可以的)。而这 4 个距离是作用在哪个控件是由以下属性控制的: app:layout_constraintBottom_toBottomOf="@+id/pnlBtnLogin" app:layout_constraintEnd_toEndOf ="@+id/pnlBtnLogin" app:layout_constraintStart_toStartOf ="@+id/pnlBtnLogin" app:layout_constraintTop_toTopOf ="@+id/pnlBtnLogin" 可以看到它们指向了同一个控件。要说明的是,这 4 个属性在界面中拖放 view 的 4 个边中的圆点就可以设置了,实在不行再手写吧。因为字符太多了,容易写错。 不过上面的 4 个距离就不太好设置,推荐手写(好像在属性设置器中也是可以设置的)。 要注意的是,原理上它们的父控件(父容器)必须是 RelativeLayout 相对布局类的,只不过,现在 asd 默认会生成这样的容器,所以可以不用管那么多。 另外还有一个比较重要的,在 asd 可视化插入 view 时是不能选择基础的 android.view.View 的(原因不明,还请大伙指教)。这时可以随便选择一个,然后再手写修改 class 节点为 android.view.View 就可以了,类似下面的代码。 <view android:id="@+id/pnlBtnLogin" class="android.view.View" id="@+id/view" android:layout_width2="327dp" android:layout_height="127dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:background="#cccccc" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/btnLogin" / > <view class="android.view.View" id="@+id/view2" android:layout_width2="320dp" android:layout_height="120dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:background="#FF8040" app:layout_constraintBottom_toBottomOf="@+id/pnlBtnLogin" app:layout_constraintEnd_toEndOf="@+id/pnlBtnLogin" app:layout_constraintStart_toStartOf="@+id/pnlBtnLogin" app:layout_constraintTop_toTopOf="@+id/pnlBtnLogin" /> 以上代码在 asd 中会报错,因为它解析不了 android:layout_width2 这样不存在的属性,所以要去掉。我这里之所以有,是因为要取消原有的 android:layout_width 属性,以使控件的宽度能随关联控件改变而改变。这样可间接的实现 h5 中的 div 布局或者是 delphi 中的对齐。 这个值也不能不写,也不能写 fill_parent 或 wrap_content 这样的,要写为 0 而且还得带单位。 android:layout_width="0dp" /正确的写法 android:layout_width="0" //这个会报错 完成后的效果,pnlBtnLogin 就相当于是边框了。 这样组合出来的标准 view 同样是可以设置点击事件的。
所在合集/目录
简式 android 开发教程 for xmppmini
更多
发表评论:
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.