Android ImageView无法获取宽度

Android ImageView无法获取宽度,android,android-layout,android-xml,Android,Android Layout,Android Xml,我有以下XML代码: <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"

我有以下XML代码:

<TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">

            <ImageView
                android:id="@+id/imgOffer"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:scaleType="fitXY"
                app:srcCompat="@drawable/applogo1" />


       </TableRow>

</TableLayout>

根据此代码,
imgOffer
应获取其父级的整个宽度
tablerow

但是图像宽度没有改变(见下图)

当我硬编码宽度(比如150dp)时,效果很好

我做错了什么??


这似乎解决了问题,使用重量而不是宽度:

<ImageView
            android:id="@+id/imgOffer"
            android:layout_weight="1"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/applogo1"  />


来源

这似乎解决了问题,使用重量而不是宽度:

<ImageView
            android:id="@+id/imgOffer"
            android:layout_weight="1"
            android:layout_height="200dp"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/applogo1"  />

source

使用android:src=“@drawable/applogo1”代替app:srcCompat=“@drawable/applogo1”


编辑: 对imageview使用权重,而不是指定匹配父项,然后重试一次

<ImageView
       android:id="@+id/imgOffer"
       android:layout_width="0dp"
       android:layout_weight="1"
       android:layout_height="200dp"
       android:scaleType="fitXY"
       app:srcCompat="@drawable/ic_launcher" />

使用android:src=“@drawable/applogo1”代替app:srcCompat=“@drawable/applogo1”


编辑: 对imageview使用权重,而不是指定匹配父项,然后重试一次

<ImageView
       android:id="@+id/imgOffer"
       android:layout_width="0dp"
       android:layout_weight="1"
       android:layout_height="200dp"
       android:scaleType="fitXY"
       app:srcCompat="@drawable/ic_launcher" />

看起来像一个bug,但如果使用权重1和宽度0dp,它似乎会起作用

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <ImageView
            android:id="@+id/imgOffer"
            android:layout_weight="1" <<<<<
            android:layout_width="0dp"  <<<<<
            android:layout_height="200dp"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/applogo1" />


   </TableRow>


看起来像一个bug,但如果使用权重1和宽度0dp,它似乎可以工作

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <ImageView
            android:id="@+id/imgOffer"
            android:layout_weight="1" <<<<<
            android:layout_width="0dp"  <<<<<
            android:layout_height="200dp"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/applogo1" />


   </TableRow>


@nitinkumarp 200dp代表高度,我指的是width@nitinkumarp200dp代表高度,我指的是宽度。重量有什么作用?它重视视图。例如,如果你有三个视图,你可以给它们相同的权重,它们会均匀分布。你也可以给你的父对象分配一个“权重总和”,以表示如果你想让它们全部填充视图,它们的总和应该是多少。因此,在这里,你给它一个权重1,它实质上是说“匹配父对象”。权重做什么?它赋予视图重要性。例如,如果你有三个视图,你可以给它们相同的权重,它们会均匀分布。你也可以给你的父对象分配一个“权重总和”,以表示如果你想让它们全部填充视图,它们的总和应该是多少。因此,在这里,你给它的权重是1,它实质上是说“匹配父对象”。