[英]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.