0

任何人都可以看到以下内容有什么问题:

                if (mViewPager.getCurrentItem() == 3){
                TableLayout tbl = (TableLayout)findViewById(R.id.tblHistory);

                if (tbl.getChildCount() != mExceptions.size()){

                    for (int i = tbl.getChildCount(); i < mExceptions.size(); i++){
                        GPSException e = mExceptions.get(i);

                        //TableRow
                        TableRow tr = new TableRow(this);
                        tr.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                        tr.setBackgroundColor(Color.BLACK);

                        //DateTime
                        TextView tx = new TextView(this);
                        tx.setLayoutParams(new android.view.ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        tx.setText(e.DateTime);
                        tx.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceMedium);
                        tx.setTextColor(Color.BLACK);
                        tx.setBackgroundColor(Color.WHITE);
                        tr.addView(tx);

                        //Speed
                        tx = new TextView(this);
                        tx.setLayoutParams(new android.view.ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        tx.setText(Float.toString(e.Speed));
                        tx.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceMedium);
                        tx.setTextColor(Color.BLACK);
                        tx.setBackgroundColor(Color.WHITE);
                        tr.addView(tx);

                        //Bearing
                        tx = new TextView(this);
                        tx.setLayoutParams(new android.view.ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        tx.setText(Double.toString(e.Degrees));
                        tx.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceMedium);
                        tx.setTextColor(Color.BLACK);
                        tx.setBackgroundColor(Color.WHITE);
                        tr.addView(tx);

                        //Exceptions
                        tx = new TextView(this);
                        tx.setLayoutParams(new android.view.ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        tx.setText(e.ExceptionString());
                        tx.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceMedium);
                        tx.setTextColor(Color.BLACK);
                        tx.setBackgroundColor(Color.WHITE);
                        tr.addView(tx);

                        tbl.addView(tr, 0);
                    }

                    tbl.invalidate();
                    tbl.refreshDrawableState();
                }
            }

我的类实现了 LocationListener 并且上面的代码在 onLocationChanged 事件中被触发。目的是为每个排队的“异常”添加一个 TableRow 到一个 TableLayout。每行插入位置 0。

除了出现的正确方法之外,我已经尝试了所有方法!

我的布局如下(暂时没有使用的资源,但是一旦我解决了这个问题 - 对于所有眼尖的观众!):

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">

   <TableRow android:layout_width="match_parent" android:layout_height="wrap_content">
       <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Dt/Tm"></TextView>            
       <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Spd"></TextView>            
       <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Brg"></TextView>            
       <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ex"></TextView>            
   </TableRow>
</TableLayout>

没有抛出异常,如果我在 for 循环中吐出一条短消息,它确实会出现。

如果您需要更多信息,这不是问题。

谢谢。

4

2 回答 2

1
tbl.addView(tr, 0);

我认为您需要提供该布局参数,而不是 0。也许试试这个?

tbl.addView(tr, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
于 2013-08-01T14:53:04.950 回答
0

毕竟,删除android.view.ViewGroup.LayoutParams限定符(意味着每个布局参数TextViewnow are TableRow.LayoutParams)已经修复了解决方案。为什么?我不知道......

也许 TextView 的布局参数必须与 TableRow 相关??!在这里刮。无论如何,问题解决了:-(

于 2013-08-01T15:28:18.743 回答