Android:tablerow消失了?

时间:2011-06-17 00:30:24

标签: android layout

我有两个<TableLayout> <TableRow>。第一行包含两个按钮(这样可以正常工作),第二行包含<FrameLayout>,其中包含<ImageView>。我的问题是,在我将图片加载到TableRow之前,第二个FrameLayout(和ImageView)才会出现。我希望FrameLayout始终可见(带有背景颜色)。

我在android:layout_width="match_parent"android:layout_height="match_parent"中使用了<ImageView><FrameLayout>,但似乎没有帮助。

这是布局xml:

<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="5dp"
    android:stretchColumns="1">
    <TableRow>
        <Button
            android:id="@+id/buttonLoadPhoto"
            android:text="Load..."
            android:textSize="20sp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
        <Button
            android:id="@+id/buttonPrintPhoto"
            android:text="Print..."
            android:textSize="20sp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </TableRow>
    <TableRow
        android:background="#FF4422">
        <FrameLayout
            android:id="@+id/frameLayoutPhoto"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#303030">
            <ImageView
                android:id="@+id/imageViewPhoto"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="matrix">
            </ImageView>
        </FrameLayout>
    </TableRow>
</TableLayout>

注意1:我为违规<TableRow>添加了背景颜色,因此我可以将问题缩小到TableRow而不是ImageViewTableRow的背景颜色没有显示出来。

注意2:这是加载到Activity <TabHost>的{​​{1}}的布局,以防万一。

注3:我的目标是Android 2.2,我正在使用Xoom进行测试。

基本上,我希望<FrameLayout>占用标签中的剩余空间。有没有其他方法可以做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:0)

documentation表示layout_height应该是WRAP_CONTENT,宽度应该是MATCH_PARENT,并且您不需要指定它们,因为它无论如何都会强制执行它。我不确定你是否在尝试调试时添加了这些内容。

编辑(此行不正确,但在评论中提及时仍保留在此处):您还可以尝试为TableRow设置高度,因为没有提供高度和内部的内容在图像出现之前没有高度。

答案 1 :(得分:0)

我找到了使用<LinearLayout>的替代解决方案:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingTop="5dp">
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/buttonLoadPhoto"
            android:text="Load..."
            android:textSize="20sp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
        <Button
            android:id="@+id/buttonPrintPhoto"
            android:text="Print..."
            android:textSize="20sp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>
    <FrameLayout
        android:id="@+id/frameLayoutPhoto"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#303030">
        <ImageView
            android:id="@+id/imageViewPhoto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="matrix">
        </ImageView>
    </FrameLayout>
</LinearLayout>