Android膨胀的textview忽略宽度

时间:2015-04-08 17:18:44

标签: android textview layout-inflater textwrapping android-inflate

我在布局xml文件中有一个布局。我有固定宽度110dp。在布局中,我有一个固定宽度为100dp的TextView。

当我使用LayoutInflater为视图充气并将其添加到LinearLayout中时,TextView及其父亲RelativeLayout会忽略设置的宽度并延伸到文本的大小。我希望文本以指定的宽度换行并获取所需的高度。

我试图在通胀后将视图的宽度强制转换(将dps转换为pxs),但仍然没有。

有什么建议吗?

布局XML

<?xml version="1.0" encoding="utf-8"?>  

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="110dp"
    android:layout_height="match_parent"
    android:padding="1dp" >

    <RelativeLayout    
        android:layout_centerInParent="true"
        android:id="@+id/info_layout"
        android:layout_width="108dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="2dp"
        android:background="@drawable/rounded_corners_grey_3">

    <ImageView 
        android:contentDescription="@string/image"
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"/>                

    <ImageView 
        android:contentDescription="@string/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:src="@drawable/image_overlay"
        android:layout_centerInParent="true"/>

    <LinearLayout 
        android:id="@+id/detailsLayout"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="left"
        android:layout_margin="3dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        >            

        <TextView 
            android:id="@+id/name"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:textSize="12sp"
            android:gravity="center" 
            android:layout_weight="1"
            android:ellipsize="none"
            android:maxLines="100"
            android:scrollHorizontally="false"
            />            

        <TextView 
            android:id="@+id/details"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:textColor="@color/bethere_green"
            android:textSize="12sp"
            android:layout_weight="1"
            android:ellipsize="none"
            android:maxLines="100"
            android:scrollHorizontally="false"/>                      

    </LinearLayout> 

    <ImageView 
        android:contentDescription="@string/image"
        android:id="@+id/noPhotos"
        android:layout_width="55dp"
        android:layout_height="38dp"
        android:src="@drawable/photos_icon"
        android:layout_centerInParent="true"/>

    </RelativeLayout>

</RelativeLayout>

1 个答案:

答案 0 :(得分:3)

我的猜测是你正在这样做:

inflater.inflate(R.layout.textview, null, false);

而不是:

inflater.inflate(R.layout.textview, parent, false);

如果使用后者,TextView将不会丢失其LayoutParams。 如果不是这种情况,您可以编辑您的问题以包含代码(XML和通胀代码),这样我们就可以看到您是如何尝试这样做的。