【发布时间】:2020-01-03 07:24:44
【问题描述】:
我有一个小项目,我想多次重用某个 UI 组件,所以我通过扩展 ViewGroup 创建了一个小部件。在那个 ViewGroup 中,我膨胀了一个在 LinearLayout 内包含 TextView 的视图,并通过 addView 将该膨胀视图添加到 ViewGroup 槽中。
当我通过 Hierarchy Viewer 查看时,外部 LinearLayout 完美地扩展了自身,但内部 TextView 具有 getHeight() = 0 和 getWith() = 0。奇怪的是 layout_height 和 layout_width 是我在 xml 中给它们的值。
我这里没有代码,但它看起来像这样:
xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="random text.."
android:layout_with="200px"
android:layout_height="50px" />
</LinearLayout>
Java:
class MyWidget extends ViewGroup {
...
//In constructor
myView = View.inflate(context, R.layout.xml, null);
addView(myView);
//In layout
myView.layout(l, t, r, b);
我已尝试为我的文本视图 fill_parent 提供大小值,但没有帮助。
【问题讨论】:
-
您是否尝试在 Hierarchy Viewer 中强制布局请求?如果它使 textview 出现,那么您可能面临框架错误(应该在 API > 8 AFAIK 中解决)。
-
不,我不知道我能做到这一点。稍后我回来时会尝试。但是,我确实在我的小部件中尝试了 forceLayout() 几次,但没有帮助。
-
也许您应该创建 LinearLayout.LayoutParams(int width, int height) 并将其设置为您的 TextView?
-
我猜,你必须调用 measure(...,...)
-
TextView
layout_width缺少d。这可能没有帮助。
标签: android