android 自定义relativelayout,android-自定义RelativeLayout上的setBackground无法正常工作
所有,
我有一个自定义的RelativeLayout,在加载视图之后,我想将RelativeLayout的背景更改为可绘制的.我不知道为什么它不起作用…似乎应该很简单.
这是我的自定义布局代码:
public class InputBoxView extends RelativeLayout {
//My variables
//Irrelevants initalizers
//Method in question
public void addErrorBox() {
setBackgroundResource(R.drawable.error_border);
}
}
这是自定义视图的布局文件:
android:layout_width="match_parent"
android:layout_height="@dimen/standard_line_height"
android:background="@android:color/white" >
style="@style/space_view"
android:layout_alignParentTop="true" />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true">
android:id="@+id/input_box_textview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".35"
android:padding="10dp"
android:text="Key" />
android:id="@+id/input_box_edittext"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.65"
android:layout_marginRight="10dp" />
style="@style/space_view"
android:layout_alignParentBottom="true" />
这是我的error_border
当我从活动中调用addErrorBox方法时,背景没有明显变化,但是如果我在InputBoxView实例上放置一个断点,则在调用addErrorBox之后mBackground属性会发生变化,因此我相信背景会发生变化,但是没有更新.
我尝试在InputBoxView实例上调用invalidate(),但仍然无法正常工作.
有人有主意吗?
解决方法:
根据我对您提供的代码进行的测试,问题是
android:background="@android:color/white"
自定义视图xml的相对布局上.似乎忽略了您为InputBoxView使用setBackgroundResource设置的任何内容.
删除该属性后,便可以看到红色边框背景.
一种解决方案是从xml中删除RelativeLayout,因为InputBoxView已经从它扩展了,并设置了白色背景,宽度高度以及在您为自定义视图充气时不设置的内容.
因此,您的xml可能如下所示
并在您的InputBoxView中
public InputBoxView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.some_custom, this, true);
// Set what you need for the relative layout.
setBackgroundColor(Color.WHITE);
}
public void addErrorBox() {
setBackgroundResource(R.drawable.error_border);
invalidate();
}
或者,您可以将ID添加到RelativeLayout并直接修改背景,而不是在InputBoxView上.
对于invalidate,您需要在onCreate之后使用它,以便重新绘制它.
希望能帮助您解决问题或至少为您指明正确的方向.
标签:android-layout,android
来源: https://codeday.me/bug/20191121/2055154.html
android 自定义relativelayout,android-自定义RelativeLayout上的setBackground无法正常工作相关推荐
- android 自定义relativelayout,Android布局(RelativeLayout、TableLayout等)使用方法
本文介绍 Android 界面开发中最基本的四种布局LinearLayout.RelativeLayout.FrameLayout.TableLayout 的使用方法及这四种布局中常用的属性. Lin ...
- android 继承relativelayout,Android自定义View(RelativeLayout),并嵌套(recyclerView)
自定义view嵌套使用,简单操作. 一:简单的自定义view(relativeLayout) public class ViewRelativeLayout extends RelativeLayou ...
- imageview 自定义 android,Android自定义ImageView实现在图片上添加图层效果
首先我们先看下效果图 实现思路 这是两张前后对比图,右边第二张图里面的已抢光标签图片当已经没有商品的时候就会显示了,在每个图片的中心位置,第一想法是在ImageView的外层再套一层RelativeL ...
- Android RecyclerView(八)设置自定义 下拉刷新 与 上拉加载数据
Android RecyclerView(八)设置下拉刷新 与 上拉加载数据 GitHub 项目源码 CSDN 博客说明 智慧安卓App 文章分析 下拉刷新效果 上拉加载数据效果 1 xml布局文件中 ...
- Android自定义动态布局 — 多图片上传
Android自定义动态布局 - 多图片上传 本文介绍Android中动态布局添加图片,多图片上传. 项目中效果图: 技术点: 1.动态添加格局中的线条和添加图片的+号 2.多张图片异步上传 首 ...
- android高德地图上加自定义菜单,高德地图Android室内地图如何自定义覆盖物
高德地图Android室内地图如何自定义覆盖物 亲,小德看到亲已经在开坛创建工单咨询了呢,建议亲耐心等待回复哦,会有开发大神给亲回复哦~ gao de di tu a n d r o i d shi ...
- android自定义头像上传,android裁切图片之用于头像上传
嘛话都不说,直接贴代码,也是在网上找的代码copy出来的! 页面代码 encoding="utf-8"?> android:orientation="vertica ...
- android 自定义图片容器,Android应用开发中自定义ViewGroup视图容器的教程
一.概述在写代码之前,我必须得问几个问题: 1.ViewGroup的职责是啥?ViewGroup相当于一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性, ...
- android 自定义event,Android运用onTouchEvent自定义滑动布局
写在自定义之前 我们也许会遇到,自定义控件的触屏事件处理,先来了解一下View类中的,onTouch事件和onTouchEvent事件. 1.boolean onTouch(View v, Motio ...
最新文章
- centos自启动脚本
- Java读取xml数据
- 第十三节: EF的三种模式(三) 之 来自数据库的CodeFirst模式
- html5画电池状态,HTML5的一个显示电池状态的API简介
- MySQL之在储存过程中使用表名为变量
- h5物体拖动_html5实现拖拽效果
- 汽车之家监控系统的第一次里程碑
- [python] 1.解释器
- java接口开发流程
- python下载安装教程-Python下载并安装图形教程[超级详细]
- java毕业设计数码产品导购网站mybatis+源码+调试部署+系统+数据库+lw
- 「网络安全」安全设备篇(7)——抗DDOS产品
- 【CVPR2018】Deep Mutual Learning
- NYOJ 无主之地1
- 第二十二章 SQL命令 CREATE TRIGGER(二)
- 禁止所有搜索引擎蜘蛛的爬行收录
- 推荐28个网站,让你边玩边学
- |app自动化测试之Appium问题分析及定位
- SkeyeVSS安防视频云解决方案助力解决幼儿园安全系统防护问题
- 小写数字转大写 一二三...