自定义扩展TableLayout不添加xml TableRows

时间:2012-09-07 00:42:15

标签: android class tablelayout

我给。

我正在尝试扩展TableLayout类(简单地说,我可以覆盖onMeasure),并且我正在膨胀一个用XML定义的TableLayout。

TableLayout显示(我可以看到它,因为它的自定义背景)但TableRows没有。

即使在eclipse的XML“Graphical Layout”中,如果我强制TableLayout成为我的自定义扩展类(com.example.MainApplication.TableLayout_Schedrunning),嵌套的TableRows也不存在。

但是,如果我将XML更改为TableLayout,那么TableRows会神奇地出现。

<?xml version="1.0" encoding="utf-8"?>
<!-- this doesn't work-->
<com.example.MainApplication.Tablelayout_Schedrunning xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frmlay_schedule"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:padding="2dp"
android:background="@drawable/schedrunning_background" >
<TableRow 
    android:id="@+id/tblrow_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="5dp"
    >
    <TextView 
        android:id="@+id/txtSchedRunningHeader"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Schedule Running"
        android:textColor="@android:color/white"
        android:textSize="13dp"/>

    <TextView 
        android:id="@+id/txtCurrScheduleRunning"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:textSize="11dp"/>
</TableRow>

</com.example.MainApplication.Tablelayout_Schedrunning>

再说一遍,重申一下 - 如果我将上面的自定义类更改为简单的<TableLayout>,则会显示TableRow中的嵌套TextView。如果我不这样做,他们就不会。 我错过了什么简单的事情?

哦,TableLayout是一个非常标准的扩展名:

public class Tablelayout_Schedrunning extends TableLayout {

public Tablelayout_Schedrunning(Context context) {
    super(context);
    Log.w("tablelayout","simple context");
    // TODO Auto-generated constructor stub
}

public Tablelayout_Schedrunning(Context context, AttributeSet attrs) {
    super(context, attrs);
    Log.w("tablelayout","advanced, context and attrs");
    // TODO Auto-generated constructor stub
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    // TODO Auto-generated method stub
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec);

    Log.w("tablelayout","parentWidth is " + parentWidth);
    Log.w("tablelayout","parentHeight is " + parentHeight);
    //super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    setMeasuredDimension(parentWidth, (int) (parentHeight * .4));
}

1 个答案:

答案 0 :(得分:1)

我认为您应该将{{1and1}}添加到super.onMeasure

的扩展名中