java - 如何获取动态创建的表格的表格宽度?

标签 java android dynamic width tablerow

我正在开发一个用于语言学习的应用程序。我想将翻译直接显示在外语单词下方。我目前尝试通过使用动态创建的表来完成此任务。但是表格变得比显示宽度更宽,并且表格的很多部分都在 View 之外。我想测试单词是否会被移出 View ,在这种情况下,继续在下面的新表格中写入这些单词。

如何在运行时获取表格的宽度?

我是 Android 编程新手。您是否有更好的想法如何在屏幕上显示不同语言的文本?

Resources res  = getResources();
        cn = res.getStringArray(R.array.lesson5_1_HanYu);
        py = res.getStringArray(R.array.lesson5_1_pinyin);
        dt = res.getStringArray(R.array.lesson5_1_deutsch);

        Intent in = getIntent();
        int index = in.getIntExtra("com.example.ITEM_INDEX", -1);

        TableLayout tableLayout;
        TableRow tableRow1, tableRow2, tableRow3;
        TextView cn1TV, py1TV, dt1TV, cn2TV, py2TV, dt2TV, cn3TV, py3TV, dt3TV;
        TextView[] cnTV = new TextView[cn.length];
        TextView[] pyTV = new TextView[py.length];
        TextView[] dtTV = new TextView[dt.length];

        if(index > -1){

            tableLayout = new TableLayout(this);
            tableRow1 = new TableRow(this);
            tableRow2 = new TableRow(this);
            tableRow3 = new TableRow(this);
            TableLayout.LayoutParams lp = new TableLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

            int i = 0;
            boolean lineEnd = false;
            while(i < cn.length && lineEnd == false){
                cnTV[i] = new TextView(this);
                cnTV[i].setText(cn[i] + " ");
                pyTV[i] = new TextView(this);
                pyTV[i].setText(py[i] + " ");
                dtTV[i] = new TextView(this);
                dtTV[i].setText(dt[i] + " ");

                tableRow1.addView(cnTV[i]);
                tableRow2.addView(pyTV[i]);
                tableRow3.addView(dtTV[i]);

                // Check if next string is still in DisplayView area:

                // Code ...
                // change value of lineEnd if necessary


                i++; // proceed with next element in next interation
            }

            tableLayout.addView(tableRow1);
            tableLayout.addView(tableRow2);
            tableLayout.addView(tableRow3);

            setContentView(tableLayout);

        }

最佳答案

这是我测量 TextView 的一个项目中的代码示例。您将测量一个 TableRow

 TextView filter = findViewById(R.id.list_filter);
           filter.measure(0, 0);

           int center = filter.getLeft() + filter.getMeasuredWidth()/2;

            Point p =  new  ViewTarget(filter).getPoint();




                    Log.i(TAG, "x: " + p.x
                    + " width: " + filter.getWidth()
                    + " right: " + filter.getRight()
                    + " left: " + filter.getLeft()
                    + " measured: " + filter.getMeasuredWidth()
            );

            Log.i(TAG,  "value: " + (0- filter.getLeft() - filter.getMeasuredWidth()));

关于java - 如何获取动态创建的表格的表格宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55327909/

相关文章:

java - Eclipse 插件开发 : Is there a way to control installer messages about missing dependencies of my plugin?

java - 如何从 jmx 客户端访问 dynamicmbean

android - 在适用于 Android 的 OpenGL ES 中,将对象转换到 map 上的最佳方式是什么?

java - 仅包含 Firebase 插件的简单 Cordova 应用程序无法在 Android 上构建或运行

java - 即使在 apache flink 中实现 AppendTableStream 接口(interface)后仍出现以下错误

excel - 动态设置用户窗体标签前景色

java - 如何格式化 AJAX POST 请求与 cURL?

android - 使用 smack 'XMPPError: service-unavailable - cancel' 传输文件失败

angular - 使用服务动态加载 NgModule entryComponents

java - 处理多个项目时将资源与 gradle 合并的问题