1

我是 Android 和 Java 的新手,什么都不懂。View 类中有一些以 . 为前缀的公共方法@ViewDebug.ExportedProperty(category = "layout")。例如:

@ViewDebug.ExportedProperty(category = "layout")
public boolean isLayoutRtl() {
    return (getLayoutDirection() == LAYOUT_DIRECTION_RTL);
}

为什么从View派生的Android类可以调用这些公共方法,但是另一个包(例如我的)也从View派生的类,看不到这些公共方法?

4

2 回答 2

0

检查整个方法,包括评论。

/**
 * Indicates whether or not this view's layout is right-to-left. This is resolved from
 * layout attribute and/or the inherited value from the parent
 *
 * @return true if the layout is right-to-left.
 *
 * @hide
 */
@ViewDebug.ExportedProperty(category = "layout")
public boolean isLayoutRtl() {
    return (getLayoutDirection() == LAYOUT_DIRECTION_RTL);
}

有一个@hide注解,这意味着该方法不是公共 Android API 的一部分。

对你来说幸运的是,方向常数和getLayoutDirection()已经公开可用。在您自己的实现中复制此方法很简单。

于 2013-10-04T01:30:16.367 回答
0

我发现一些以 为前缀的公共方法@hide,但是从 View 派生的 Android 类可以调用这些公共方法。例如:

/**
 * Returns whether this View is accessibility focused.
 *
 * @return True if this View is accessibility focused.
 * @hide
 */
public boolean isAccessibilityFocused() {
    return (mPrivateFlags2 & PFLAG2_ACCESSIBILITY_FOCUSED) != 0;
}

我是 Android 和 Java 初学者。

于 2015-08-27T09:37:59.843 回答