android - 将动态属性传递给布局 XML 中的视图
问题描述
假设我的活动的布局 XML 具有这样的视图。下面的 XML 具有该属性的硬编码值,但我想在设置内容视图时从活动中传递值。
<myView
android:id = "@+id/myView
....
app:myAttriute = "someMode"/>
视图在构造函数中读取该值,如下所示并设置初始模式。
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
{
val inflater = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.myView, this);
var arr = context.obtainStyledAttributes(attrs, R.styleable.myView);
var mode = arr.getString(R.styleable.myAttribute);
是否可以在活动中设置该属性,以便可以在视图的构造函数中使用该值?听起来可能很奇怪,像这样在视图的构造函数之后更改模式会导致一些问题
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myView = findView...
myView.myAttribute = "someMode";
如果可能的话,我希望我能以某种方式将属性传递给它的构造函数。
super.onCreate(savedInstanceState)
//takes the view's ID and attribute name/value to be used while
//setting the content view (passed to myView's constructor)
hypotheticalMethod(R.id.myView, "myAttriute", "someMode");
setContentView(R.layout.activity_main)
解决方案
推荐阅读
- spring-boot - Oauth2 SSO 流程
- reactjs - 即使值没有改变,useSelector 也会更新
- php - woocommerce_quantity_input() 在商店页面 woocommerce 上不起作用
- swift - Vapor swift 代码在本地主机上工作,但在 heroku 部署后,所有 api 工作正常,但这个崩溃
- github - 如何在 GitHub Markdown 中缩进副标题和内容?
- mysql - 存储配对日志的正确方法是什么?
- python - 使用正则表达式从文本中提取帮助
- informix - Informix 使用 IfxCallableStatement 返回“无法解析例程 (%s)”错误
- java - Spark:如果键存在,则获取列映射的特定值
- javascript - 如何使左侧垂直菜单>子项目在屏幕上可见