gpt4 book ai didi

android - 如何在 ANDROID 中获取表格布局单元格的位置

转载 作者:行者123 更新时间:2023-11-30 03:56:09 25 4
gpt4 key购买 nike

我在表格布局中添加带有 TextView 的动态行,我还想要该 TextView 的 x y 坐标。为此,我使用了 view.getLocationOnScreen(loc) 方法。

但是只显示最后一个项目坐标,我想显示所有项目坐标。

这是我的源代码,请帮助我。

谢谢。

public class MainActivity extends Activity {
TextView tv1, tv2;
TableRow row;
TextView txt;
TableLayout tl;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tl = (TableLayout) findViewById(R.id.tableLayout1);
for (int i = 0; i <= 15; i++) {
row = new TableRow(this);
txt = new TextView(this);

tl.addView(row);
row.addView(txt);
readLocation();
}
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
readLocation();
}

private void readLocation() {
int[] locationOnScreen = new int[2];
txt.getLocationOnScreen(locationOnScreen);
txt.setText(locationOnScreen[0] + " : " + locationOnScreen[1]);
}

}

和我下面的 xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TableLayout>
</ScrollView>

最佳答案

您不应该尝试以这种方式在 onCreate 方法中获取这些坐标,因为此时布局过程尚未完成。

这里有一些基于您的代码修改的演示:

public class MainActivity extends Activity {

ArrayList<TextView> txt = new ArrayList<TextView>();
TableLayout tl;

Handler _h = new Handler();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tl = (TableLayout) findViewById(R.id.tableLayout1);
for (Integer i = 0; i <= 15; i++) {
TableRow therow = new TableRow(this);
TextView thetxt = new TextView(this);

therow.addView(thetxt);
tl.addView(therow);

txt.add(thetxt);

thetxt.setText("stub");
}

tl.requestLayout();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

@Override
protected void onResume() {
super.onResume();
_h.postDelayed(new Runnable() {

@Override
public void run() {

for (Integer i = 0; i <= 15; i++) {

TextView thetxt = txt.get(i);

int[] locationOnScreen = new int[2];
thetxt.getLocationOnScreen(locationOnScreen);
thetxt.setText(locationOnScreen[0] + " : " + locationOnScreen[1]);
}


}
}, 1000);

}

关键点是 onResume 中的 postDelayed 让系统正确定位所有 View 。

关于android - 如何在 ANDROID 中获取表格布局单元格的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13322502/

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