0

我正在尝试将一个LinearLayout包含一些元素的代表小面板添加到AbsoluteLayout我的Activity. 我正在使用此代码,但应用程序崩溃,这是面板类的构造函数,应该将视图添加到主布局。类似的代码可用于添加运行时创建的按钮,但不适用于此。

public ButtonSetupPanel(String btnName, int keyCode, View v){
    AbsoluteLayout abs = (AbsoluteLayout) v.findViewById(R.id.mainbg);
    LinearLayout panel = (LinearLayout) v.findViewById(R.id.btnSetupPanel);
    panel.setLayoutParams(new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, 1023, 300));
    panel.setOnTouchListener(this);
    abs.addView(panel);
}

LogCat:(我正在使用 StandOut 库)

. 还有 10 个

更新:我发现问题在于,由于这LinearLayout是在另一个 XML 文件中,我需要扩展另一个布局文件并显示定义的视图(LinearLayout)。如何进行?

Update2:我使用此代码获取所需视图

public ButtonSetupPanel(String btnName, int keyCode, View v){
    AbsoluteLayout abs = (AbsoluteLayout) v.findViewById(R.id.mainbg);
    LinearLayout view = (LinearLayout) LayoutInflater.from(v.getContext()).inflate(R.layout.btnsetup , null);
    LinearLayout panel = (LinearLayout) view.findViewById(R.id.btnSetupPanel);
    view.removeView(panel);
    panel.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    panel.setX(512f);
    panel.setY(300f);
    panel.setOnTouchListener(this);
    abs.addView(panel);
}
4

1 回答 1

2

您知道 AbsoluteLayout 自 API 级别 3 以来已被弃用?尝试使用相对布局。

您可以通过将子视图添加到RelativeLayout 来重新创建绝对定位,并将RelativeLayout.LayoutParams 设置为仅具有除宽度、高度、marginTop 和marginLeft 之外的默认值。顶部和左侧边距将类似于 AbsoluteLayout 中的顶部和左侧。此外,支持负边距。

来源: AbsoluteLayout 的替代方案

于 2013-06-12T14:55:49.107 回答