Android如何将表与细胞位置对齐



我有一个由代码动态生成的行和单元格的第一个tablayout。
现在,我有一个由3行组成的较小的tablayout。
通过单击第一个表中的任何单元格显示了第二个表。
现在我的问题是:
我如何在单元的单元位置上对齐第二个表,重叠到第一个表?

感谢您的建议。


编辑:不幸的是,我无法向公众展示布局。但是我画了应该如何。对此感到抱歉。

第一表。单击单元格

在单元单元的ended

上显示第二个表格

您可以选择使用自定义对话框片段进行操作。

首先,获取全局X&您点击的第一个表视图的单元格位置。从这篇文章中:

Rect myViewRect = new Rect();
myView.getGlobalVisibleRect(myViewRect);
float cx = myViewRect.exactCenterX();
float cy = myViewRect.exactCenterY();

然后,创建一个扩展对话fragment的类(我们称其为 SecondTableFragment)。要从默认的Android样式对话框更改对话框,您需要做一些事情

使标题消失

@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    return dialog;
}

设置对话框的宽度以适合您的第二个表观

    @Override
    public void onResume() {
    getDialog().getWindow().setLayout([PARENT_LAYOUT_TYPE].LayoutParams.WRAP_CONTENT, [PARENT_LAYOUT_TYPE].LayoutParams.WRAP_CONTENT);
    super.onResume();
}

在单击单元格上方设置对话框窗口的位置(这很可能也应该在onCreateDialog()中完成):

 WindowManager.LayoutParams wmlp =  dialog.getWindow().getAttributes();
 wmlp.gravity = Gravity.TOP | Gravity.LEFT;
 wmlp.cx = cx;   //x position
 wmlp.cy = cy;   //y position

对于填写对话框视图本身的逻辑,您需要为第二个表布局创建一个新的布局文件(就像您为新活动所做的那样)并将其充气并填充它,就像其他任何正常的正常信息一样分段。确保通过X&y协调您希望对话框在调用其newInstance()方法时进行。请参阅Google的文档

设置了所有内容后,您可以通过使用Fragment Manager(或ChildFragmentManager(如果您已经在片段中))

在第一个tablayout上方显示一个"第二个表对话框",则可以使用相关信息(或ChildFragmentManager)
SecondTableFragment fragment = SecondTableFragment.newInstance(cx, cy, RELEVANT INFORMATION ...);
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    Fragment prev = getSupportFragmentManager().findFragmentByTag("secondTable");
    if (prev != null) {
        ft.remove(prev);
    }
    ft.add(fragment, "secondTable");
    ft.addToBackStack(null);
    ft.commitAllowingStateLoss();
    fragment.setCancelable(false);

相关内容

  • 没有找到相关文章

最新更新