为什么这个嵌套的TextView不能在其他人使用相同的代码时工作?

时间:2012-12-05 15:36:10

标签: android android-view

考虑此LinearLayout包含..

  • 一个带有两个子视图的嵌套线性布局

    • 一个imageView

    • 一个Textview

  • 一个textView

  • 一键

为什么我可以使用findViewById和setText在外部TextView上成功显示文本内容,而内部Textview(嵌套线性视图内部)显示为空白?

以下是onCreate的代码:

LayoutInflater inflater = LayoutInflater.from(Item.this);
LinearLayout itemLayout = (LinearLayout)inflater.inflate(R.layout.activity_item, null);            
Button proformaButton = (Button)itemLayout.getChildAt(2);

roformaButton.setOnClickListener(this);


setContentView(itemLayout);

TextView titleTitla = (TextView)findViewById(R.id.item_title);
TextView itemBody = (TextView)findViewById(R.id.item_body); 

titleTitla.setText("Tomatoes");
itemBody.setText("Potatoes");

调试时我可以看到Id找到了视图,我也可以看到setText工作(TextView的mText字段),但是活动没有显示item_title的任何内容。

我正在问如何解决这个问题,但如果这不是一件小事,那么我会非常感激一点点解释。

如果有帮助,这是xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:orientation="horizontal"
        android:layout_weight="1">

        <ImageView
            android:id="@+id/item_picture"
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:contentDescription="@string/image_item">
        </ImageView>

        <TextView 
            android:id="@+id/item_title"
            android:layout_width="0dip"
            android:layout_height="fill_parent">
        </TextView>

    </LinearLayout>

    <TextView 
        android:id="@+id/item_body"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="2">
    </TextView>

    <Button
         android:id="@+id/btnOrderItem"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/order_button"
    />

</LinearLayout>

1 个答案:

答案 0 :(得分:4)

    <TextView 
        android:id="@+id/item_body"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="2">
    </TextView>

这是layout_height="0dp"。它在其他LinearLayout上工作的原因是因为你有一个权重属性。将0dp更改为wrap_content