Android膨胀的文本视图忽略宽度

Pan*_*nos 2 android word-wrap textview android-inflate layout-inflater

我在布局 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>
Run Code Online (Sandbox Code Playgroud)

Dan*_*nai 5

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

inflater.inflate(R.layout.textview, null, false);
Run Code Online (Sandbox Code Playgroud)

代替:

inflater.inflate(R.layout.textview, parent, false);
Run Code Online (Sandbox Code Playgroud)

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