gpt4 book ai didi

android:如何将 xml 布局中的子项添加到自定义 View 中

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:22 25 4
gpt4 key购买 nike

在我的 xml 布局中,我有一个自定义 View ,我将在其中放置一些子项,例如:

<com.proj.layouts.components.ScrollLayout
android:id="@+id/slBody"
android:layout_width="700dp"
android:layout_height="400dp">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="child1"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="child2"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="child3"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="child4"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="child5"/>
</com.proj.layouts.components.ScrollLayout>

让我再解释一下。我写了一个自定义的 ScrollView,其中我已经为 children 定义了一个容器。所以我只想把它们放在那里。

public class ScrollLayout extends LinearLayout {
// View responsible for the scrolling
private FrameLayout svContainer;
// View holding all of the children
private LinearLayout llContainer;

public ScrollLayout(Context context) {
super(context);
init();
}

public ScrollLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}

private void init() {
super.removeAllViews(); // kill old containers


svContainer = new HorizontalScroll(getContext());
llContainer = new LinearLayout(getContext());
llContainer.setOrientation(orientation);
svContainer.addView(llContainer);

svContainer.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
llContainer.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

addView(svContainer);


}

... I left out the part which takes care of the scroll event ...
}

llContainer中添加Child*的方法是什么?

最佳答案

为什么不直接将所有子项从 ScrollLayout 添加到 LinearLayout?这应该在 onFinishInflate() 方法中完成。

for (int i = 0; i<getChildCount(); i++)
{
View v = getChildAt(i);
removeViewAt(i);
llContainer.addView(v);
}

当您在 XML 文件中编写结构时 - 所有内部 View 都是您自定义布局的 subview 。只需将其替换为 LinearLayout

关于android:如何将 xml 布局中的子项添加到自定义 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com