java - 如何将资源 ID 传递给自定义 View 并指示哪个 subview 使用它?

标签 java android android-layout android-view

我有一个用 Java 实现的自定义 View ,它是一个带有 4 个 subview 的垂直布局。
我希望能够通过自定义 View 中的方法传递每个 subview 的配置。
假设我只想为每个 View 传递不同的颜色 ID,例如对于 child 1 使用 R.color.white ,对于 child 2 使用 R.color.red
我如何将此信息传递到自定义 View ?以下内容可行:

public void configure(int color1, int color2, int color3, int color4)

但这样做的问题是,我更喜欢一种方法,即方法的调用者指示哪个颜色属于哪个子项 (1,2,3,4),而不是传递方法调用中固定的颜色

最佳答案

如果您希望能够允许调用者配置各个子项,我建议为每个子项公开单独的方法:

public void configureChild1(int color)
public void configureChild2(int color)
...

如果您只想要一个“动态”方法,则必须接受从位置到颜色的 Map 之类的内容,或者位置和颜色的可变参数 Pair :

public void configure(Map<Integer, Integer> positionsToColors)
public void configure(Pair<Integer, Integer> ... positionAndColors)

这些的缺点是没有编译时方法知道传入的位置是否有效。

关于java - 如何将资源 ID 传递给自定义 View 并指示哪个 subview 使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58565967/

相关文章:

java - Jacoco 在 kotlin 的测试中没有在 Kotlin 和 Java maven 项目中找到 Kotlin 文件覆盖率

java - 如何在 Android 上获取用户的国家/地区代码?

android - 两个具有共享 UserID 的应用程序

java - 如何使用滑动手势删除回收 View 中的卡片?

java - 如何将list<object>转换为字符串[]

java - Spring HandlerInterceptor 调用了两次

java - 更改 fragment 更改主题

android - 如何隐藏底部栏导航。当遵循单一 Activity 设计时?

android - 约束布局在 API 22 中异常工作

java - 膨胀类 ja.burhanrashid52.photoeditor.PhotoEditorView 时出错