【问题标题】:ImageView not getting widthImageView 没有得到宽度
【发布时间】:2017-09-12 21:28:47
【问题描述】:

我有以下 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)时效果很好

我在这里做错了什么??

【问题讨论】:

  • @nitinkumarp 200dp 是高度,我说的是宽度

标签: android android-layout android-xml


【解决方案1】:

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

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

来源TableLayout with layout_width=matchparent not matching parent

【讨论】:

    【解决方案2】:

    看起来像一个错误,但如果您使用重量 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>
    

    【讨论】:

    • 权重有什么作用?
    • 它将重要性分配给视图。因此,如果您有三个视图,例如,您可以赋予它们相同的权重,它们将被平均分配。您也可以为您的父对象分配一个“weight_sum”,以表示如果您希望它们全部填充视图,它们应该加起来多少。
    • 所以在这里,你给它的权重为 1,它本质上是在说“match_parent”。
    【解决方案3】:

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

    <ImageView
       android:id="@+id/imgOffer"
       android:layout_width="match_parent"
       android:layout_height="200dp"
       android:scaleType="fitXY"
       android:src="@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" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 2011-06-20
      • 2023-03-23
      • 2021-04-25
      • 1970-01-01
      相关资源
      最近更新 更多