簡體   English   中英

Android如何將表格與單元格位置對齊

[英]Android how to align table to cell position

我有第一個TableLayout,其中包含由代碼動態生成的行和單元格。
現在,我有第二個TableLayout由3行組成。
通過單擊第一個表中的任何單元格可以顯示第二個表。
現在我的問題是:
如何將第二張表格對齊到單擊的單元格的位置,並與第一張表格重疊?

感謝您的建議。


編輯:不幸的是我不能向公眾展示該布局。 但是我畫了應該怎么做。 很抱歉給您帶來不便。

第一張桌子。 點擊單元格

在點擊的單元格的發件人處顯示第二個表

您可以選擇使用自定義對話框片段來執行此操作。

首先,獲取您單擊的第一個表格視圖的單元格的全局x&y位置。 這篇文章:

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

然后,創建一個擴展DialogFragment的類(我們將其SecondTableFragment )。 要從默認的Android樣式對話框更改Dialog,您需要做一些事情

使標題消失

@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

對於填寫Dialog視圖本身背后的邏輯,您需要為第二個表的布局創建一個新的布局文件(就像您對新Activity所做的那樣),然后對其進行填充並填充相關信息,就像其他普通片段一樣。 確保在調用對話框的newInstance()方法時傳遞您希望對話框進入的x和y坐標。 請參閱Google文檔

一切設置完成后,您可以使用Fragment Manager(如果您已經在Fragment中,則可以使用ChildFragmentManager)在第一個TableLayout上方顯示帶有相關信息的“第二個表格對話框”

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM