我正在编写一个直接扩展 android.view.View
的自定义 View 。如果我尝试访问字段 mScrollX
或 mScrollY
,我会看到字段“无法解析或不是字段”的错误。 source code for android.view.View具有声明为 protected
的 mScrollX、mScrollY 和类似变量。我的直接子类如何无法访问其父类的 protected 字段? (像 ScrollView 这样的类显然可以。)
附:我意识到我可以调用 getScrollX()
,但我想更新这些字段;调用 setScroll()
有我不想要的副作用。
最佳答案
这是因为它们不是 Android SDK 的一部分。
这里是mScrollX
的源代码:
/**
* The offset, in pixels, by which the content of this view is scrolled
* horizontally.
* {@hide}
*/
@ViewDebug.ExportedProperty(category = "scrolling")
protected int mScrollX;
您会注意到 @hide
注释。这意味着这不是 Android SDK 的一部分。创建 Android SDK 的构建过程部分不会将此数据成员包含在 android.jar
文件中的 android.view.View
stub 版本中你正在编译。
@hide
注释用于出于内部目的需要公开或 protected 但不被视为 SDK 开发人员应该使用的东西。
请为您遇到的任何问题寻找其他解决方案。
关于java - protected 字段对子类不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916215/