使用 DataBinding 时 layout_height 在布局文件中不起作用

Posted

技术标签:

【中文标题】使用 DataBinding 时 layout_height 在布局文件中不起作用【英文标题】:layout_height doesn't work in layout file when using DataBinding 【发布时间】:2019-12-31 12:54:51 【问题描述】:

我正在从后端服务器获取用户列表,我在回收站中显示。我有每一行的布局文件。这是我尝试过的:

<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data class="UserDataBinding">
        <variable
            name="user"
            type="com.example.myapp.User" />
    </data>

    <androidx.cardview.widget.CardView
        android:layout_
        android:layout_
        android:layout_margin="2dp">

        <RelativeLayout
            android:layout_
            android:layout_>

            <ImageView
                android:id="@+id/poster_path_image_view"
                android:layout_
                android:layout_
                android:contentDescription="@null"
                android:scaleType="centerCrop" />

            //Other views
    </androidx.cardview.widget.CardView>
</layout>

我的目标是只显示个人资料图片。问题是,即使我设置layout_height150dp,图片也会显示很小。即使我增加高度,也没有任何反应。如何将 CardView/ImageView 设置为固定高度?


编辑:

我找到了解决方案。我忘了放大视图。这一行解决了问题:

ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);

【问题讨论】:

在此处添加您的图片。 图片是什么? 头像图片 你可以给我一个布局样本你想要什么? span> 当然,马上。 【参考方案1】:

根据我们的讨论,我正在添加一个XML 代码,您可以在其中根据您的需要进行网格布局,并在grid_layout_item 中进行基本更改

 <GridView
            android:id="@+id/mainGridview"
            android:layout_
            android:layout_
            android:background="#F3F3F3"
            android:columnWidth="200dp"
            android:numColumns="4"
            android:paddingStart="-2dp"
            android:paddingTop="2dp"
            android:paddingEnd="-2dp"
            android:paddingBottom="2dp"
            android:stretchMode="columnWidth">

        </GridView>

在 CardView 中查看我下面的代码,它有 90dp,您可以根据需要更改它。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:layout_
android:layout_>
<android.support.v7.widget.CardView
    android:layout_
    android:layout_
    android:layout_margin="2dp">
    <LinearLayout
        android:id="@+id/gridviewdata"
        android:layout_
        android:background="#fff"
        android:layout_
        android:orientation="vertical"
        android:gravity="center">
        <ImageView
            android:id="@+id/services"
            android:layout_
            android:layout_
            android:src="@drawable/ic_launcher_background"
            tools:ignore="ContentDescription" />

        <TextView
            android:id="@+id/names"
            android:layout_
            android:layout_
            android:text="@string/gridname"
            android:textSize="12sp"
            android:textAlignment="center"
            android:layout_marginTop="@dimen/margin4"/>


    </LinearLayout>
</android.support.v7.widget.CardView>

任何进一步的更新和帮助您可以在评论部分评论您的问题。 编码愉快。

【讨论】:

感谢您的时间和努力,但我需要该布局文件,以便使用数据绑定。看我已经在其中声明了那个变量。 你想和你的布局一样吗? 如果担心数据绑定,那么您可以复制数据绑定代码并粘贴到我的 grid_item_class 中 是的,我正是想要它。问题是当我使用数据出价时,根本不考虑android:layout_height="150dp"。你知道为什么吗? 您是否在主布局中声明了网格布局?【参考方案2】:

正如@DavidWasser 建议的那样,我添加了解决方案作为我自己问题的答案。问题是我忘了放大视图。这一行解决了我的问题:

ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);

【讨论】:

以上是关于使用 DataBinding 时 layout_height 在布局文件中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有 LiveCharts 的 WPF 在运行时添加带有 DataBinding 的系列

Offline DataBinding = enable导致错误:找不到databinding-runtime.jar

DataBinding其二

DataBinding:在点击时通过 LiveData 变量调整可见性

使用 Databinding 和 maxlines 使 ellipsize 在 TextView 中不起作用

DataBinding的双向绑定实现原理