我使用LinearLayout(带有一些内容)作为GridView中我的单元格的视图。问题是虽然我已经指定了布局的高度(android:layout_height =" 50pt")有些单元格更大。布局是垂直的,里面的项目没有高度(0pt),但它们有重量,里面有2个TextView和1个ImageView。我注意到导致问题的单元格中的图像有点大,但仍然为什么视图会增长? 我很感激你的帮助。
XML:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="50pt"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/ivHero"
android:layout_width="match_parent"
android:layout_height="0pt"
android:layout_weight="4"
android:background="@color/white"
app:srcCompat="@drawable/avatar" />
<TextView
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="0pt"
android:layout_weight="1"
android:gravity="center"
android:singleLine="true"
android:text="TextView"
android:textColor="@color/white"
android:textSize="7pt" />
<TextView
android:id="@+id/tvPercent"
android:layout_width="match_parent"
android:layout_height="0pt"
android:layout_weight="1"
android:gravity="center"
android:text="20%"
android:textColor="@color/white"
android:textSize="7pt" />
答案 0 :(得分:1)
您可以尝试在布局中使用dp而不是pt吗? 我使用不同图像尺寸的dp和pt测试它,它看起来不同。
同时检查
pt - 屏幕上的一个点,一个常见的字体大小单位。这是一个与密度无关的单元,单个pt的物理尺寸在每个屏幕密度上都是相同的。一英寸有72磅。单个pt转换的像素数取决于屏幕密度。
dp - 与密度无关的像素。这是一个与密度无关的单元,但是单个dp的物理尺寸在每个屏幕密度上仅大致相同。一英寸大约有160 dp。取决于设备的密度桶,缩放因子用于将dp转换为160dpi的像素数。单个dp转换为的像素数取决于屏幕密度上的像素和设备所属的密度桶。
sp - 与比例无关的像素,专门用于文字大小。这是一个与密度无关的单元,但是单个sp的物理尺寸在每个屏幕密度上仅大致相同。缩放因子(取决于设备的密度桶)以及用户的文本大小首选项,用于将sp转换为160 dpi的像素数。此转换的像素数取决于屏幕密度和设备所属的密度桶。
有关详细信息,您可以查看此其他answer in StackOverflow或此github repo
答案 1 :(得分:0)
谢谢
答案 2 :(得分:0)
我发现我以错误的方式夸大了我的观点,这就是xml被忽略的原因。本文介绍了我的问题: https://possiblemobile.com/2013/05/layout-inflation-as-intended/
我是这样的:
view = p1 ?: LayoutInflater.from(context).inflate(R.layout.ticket_grid,null)
具有空根,只需添加根:
override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
view = p1 ?: LayoutInflater.from(context).inflate(R.layout.ticket_grid, p2, false)
}