背景:
我正在寻找一种方法来扩展GridView
我需要在 HTML 中实现 col- 和 row-span 的方法。我有数百个元素,所以我不能使用例如TableLayout
. 但是,这将过于本地化。到目前为止,我将问题归结为如何扩展 GridView?
我尝试过的和失败的地方:
我的第一种方法是查看我需要替换哪些方法,我发现了一些无法覆盖的私有方法。所以我试图将洞源代码从 复制GridView
到一个名为CustomGrid的新类。这是一个可怕的失败,因为我无法访问该com.android.internal.R
课程。
然后我放弃了这个想法,看看我是否可以正常扩展类并用自定义副本替换所有私有方法。我拿起一支笔,建了一棵巨大的树,所有的方法都在这里。
在找到所有引用后,我尝试扩展类normal并添加了第一个方法:
private View fillDown(int pos, int nextTop) {
View selectedView = null;
int end = (mBottom - mTop);
if((mGroupFlags & CLIP_TO_PADDING_MASK) == CLIP_TO_PADDING_MASK) {
end -= mListPadding.bottom;
}
// ...
这是我的下一个问题,成员变量mBottom
和mTop
未知。我在资源中挖掘了一下,最终在View
课堂上找到了它们,但不幸的是它们被隐藏了。
/**
* The distance in pixels from the top edge of this view's parent
* to the bottom edge of this view.
* {@hide}
*/
@ViewDebug.ExportedProperty(category = "layout")
protected int mBottom;
问题:
我怎样才能在GridView
不引起哀叹和不使用大量反射的情况下扩展它?我的意思是似乎不可能将其编写为纯自定义控件。