列表项照片上的Android固定高度

Posted

技术标签:

【中文标题】列表项照片上的Android固定高度【英文标题】:Android fixed height on list item photo 【发布时间】:2015-01-22 16:05:08 【问题描述】:

我正在制作一个使用 listview 的应用程序,它具有部分标题和内容。对于每个标题,我想使用一个图像,但视图将它的高度设置为图像的高度,而不是我设置高度的值。这是在我的适配器中:

@Override public View getView(int position, View convertView, ViewGroup parent) 
        TextView view = (TextView) super.getView(position, convertView, parent);
        view.setTextColor(Color.DKGRAY);
        Item item = getItem(position);
        if (item.type == Item.SECTION) 
            if (position == 0) 
                view.setBackgroundResource(R.drawable.myImage);
                view.setHeight(400);
                view.setMaxHeight(400);
            
            else 
                //deal with other views
            
        
        return view;
    

我只是通过将列表中的第一项设置为照片来测试这一点,但正如我所说,视图没有使用 400px 作为高度。如果我在else 块中以相同的方式设置高度并将背景设置为颜色,它就可以正常工作。我应该注意,我想避免只是手动缩放图片以适应,因为最终我希望视图只显示完整图像的框架并添加滚动效果。

【问题讨论】:

【参考方案1】:

我不太确定你在问什么。您是否希望它仅在有图像时显示 400 像素,如果没有图像则更小?使用您拥有的代码,图像是否显示?

我马上想像这样重写你的代码:

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
    convertView = new TextView(mContext); // where mContext = context; appears in the adapter constructor
    convertView.setTextColor(Color.DKGRAY);
    Item item = getItem(position);
    if (item.type == Item.SECTION) 
        if (position == 0) 
            convertView.setBackgroundResource(R.drawable.myImage);
            convertView.setHeight(400);
            convertView.setMaxHeight(400);
            //need something like convertView.setText((String) item); to get text to show
        
        else 
            //deal with other views
        
    
    return convertView;

我建议使用 xml 来定义行的布局。使自定义行的外观变得更加容易。

【讨论】:

是的,即使我将高度设置为 400 像素,视图实际上使用的图像高度也像 1000 像素 您想截断并使用顶部的 400px,而不是将其缩小到 400px? 对,要么上要么下 您可以像这样在 xml 中定义背景图像:***.com/a/8501398/2832027 或者您可以先使用带有 ImageView 的 RelativeLayout 为您的行使用布局:***.com/a/8242775/2832027 所以我使用了第一个链接中引用的 xml 文件,所做的只是使图像没有被拉伸,它仍然保持在 400 像素以上。此外,我似乎无法使用 convertView 并使用(TextView)进行投射。我收到一个错误,某些方法(例如 setTextColor)不存在。

以上是关于列表项照片上的Android固定高度的主要内容,如果未能解决你的问题,请参考以下文章

包装在 Horizo​​ntalScrollView 中的 Android Listview 高度不正确,其中列表项的高度不同

Android开发 RecyclerView开发记录

通过单击列表视图上的列表项更改 MapView Android Studio 上的位置相机视图

更改 Android JellyBean 上的操作栏高度

Android动态设定GridView的高度,固定column,实现高度自适应

Android - 如何自动调整 TextView 的大小以适合固定高度的容器?