首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

默认ArrayAdapter的安卓ListView在显示时会超大

是因为ArrayAdapter默认使用了系统提供的布局文件android.R.layout.simple_list_item_1,该布局文件中的TextView设置了较大的字体大小和行高,导致ListView中的每个项显示过大。

为了解决这个问题,可以自定义一个适配器,并指定自定义的布局文件来替代默认的布局文件。以下是一个示例:

  1. 创建一个自定义的适配器类,继承自ArrayAdapter,并重写getView方法:
代码语言:txt
复制
public class CustomAdapter extends ArrayAdapter<String> {
    private Context mContext;
    private int mResource;

    public CustomAdapter(Context context, int resource, List<String> objects) {
        super(context, resource, objects);
        mContext = context;
        mResource = resource;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            convertView = inflater.inflate(mResource, parent, false);
        }

        TextView textView = convertView.findViewById(R.id.text_view);
        String item = getItem(position);
        textView.setText(item);

        return convertView;
    }
}
  1. 创建一个自定义的布局文件,例如custom_list_item.xml,可以根据需求自定义布局样式,例如设置合适的字体大小和行高:
代码语言:txt
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:padding="10dp" />

</LinearLayout>
  1. 在Activity中使用自定义的适配器和布局文件:
代码语言:txt
复制
ListView listView = findViewById(R.id.list_view);
List<String> data = new ArrayList<>();
data.add("Item 1");
data.add("Item 2");
data.add("Item 3");

CustomAdapter adapter = new CustomAdapter(this, R.layout.custom_list_item, data);
listView.setAdapter(adapter);

通过以上步骤,就可以解决默认ArrayAdapter的安卓ListView显示过大的问题。在自定义适配器中,可以根据需求进一步定制布局样式,以满足具体的显示需求。

推荐的腾讯云相关产品:腾讯云移动开发平台(https://cloud.tencent.com/product/mpp)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

第八夜 玛丽莲梦露

我们经常会根据数据数量,动态调整显示条目的个数。譬如一个社交应用显示好友信息。当好友数目增加或减少时,需要动态增加或减少显示好友条目。...这个问题可以通过动态布局方式,用addView()方法,把视图元素加到视图树中。视图元素动态添加,会导致本身效率会变慢。 我将使用ListView来重复利用构图方式。...提供了ArrayAdapter类,可以综合以上功能。它可以为每个数据元素赋予相同视图格式。将ListViewArrayAdapter绑定后,就可以动态调整条目了。 ?...未来字符串型数据按照该视图元素规定格式显示。这个布局源代码可参考链接。还提供了其它一些简易布局,参考链接。我们当然可以用自己布局来替代它。...使用setTag()优化CategoryAdapter 上面已经提到,ArrayAdapter可以通过重复利用条目视图,来优化应用效率。

61510

第八夜 玛丽莲梦露

我们经常会根据数据数量,动态调整显示条目的个数。譬如一个社交应用显示好友信息。当好友数目增加或减少时,需要动态增加或减少显示好友条目。...这个问题可以通过动态布局方式,用addView()方法,把视图元素加到视图树中。视图元素动态添加,会导致本身效率会变慢。 我将使用ListView来重复利用构图方式。...提供了ArrayAdapter类,可以综合以上功能。它可以为每个数据元素赋予相同视图格式。将ListViewArrayAdapter绑定后,就可以动态调整条目了。 ?...未来字符串型数据按照该视图元素规定格式显示。这个布局源代码可参考链接。还提供了其它一些简易布局,参考链接。我们当然可以用自己布局来替代它。...使用setTag()优化CategoryAdapter 上面已经提到,ArrayAdapter可以通过重复利用条目视图,来优化应用效率。

1.9K90
  • -无敌解决ListView添加标题头无法正常显示问题(歪门邪道)

    原因: 在做实验时,用到了ListView来做表格显示数据。由于表头是使用xml布局文件动态实现。造成了添加好组件后,无法正常显示情况。浪费了我2小时时间,终于利用歪门邪道解决了。...重点 首先要知道是使用listView.addHeaderView(view)添加表头时,如果listView中没有数据的话,是不能显示数据。...咋整呢 终于 被逼不行了,就试着继续往下做。我先利用for循环,随便生成了几条数据,发现可以正常显示了,哈哈哈哈。...item_hight"}, new int[]{R.id.item_id, R.id.item_username, R.id.item_age,R.id.item_hight}); //实现列表显示...这种办法应该不是最好解决办法,如果哪位大神看到了此篇文章,如果您有更好解决办法,请给小弟留言。

    1.4K31

    Android ListView与RecycleView对比使用解析

    ListView,就如其名,是用来显示列表一种View,而RecycleView,是其加强版,今天带来是这两个几乎具有相同功能对比使用 先从ListView说起吧 ListView: 1.布局文件中使用...ListView,并为其定义一个id,方便我们之后调用,宽高与父控件相同 2.准备数据,将数据添加到ArrayAdapter适配器当中 3.Activityjava文件中使用findviewbyid...1是系统给一个item布局,最后一项是String数组,也就是数据,之后寻找ListView实例,调用setAdapter方法设置适配器 public class MainActivity...; } } 这是一个简单例子,但是,我们知道第二个参数是提供一个item布局,这个布局过于简单,我们想要实现一个自定义布局怎么办?...方法,获得list里面的某个对象,之后,由holder调用两个TextViewsetText方法进行设置,举一反三,如果是imageview的话,同样可以使用setresource设置其显示图片,设置参数

    1.7K10

    Android学习--ListView

    这篇文章用于总结自己这两天学到ListView和RecyclerView 笔记,以及从我这个iOS开发者角度去理解和学习这两个控件,会比较一下他们个iOS中那些控件是一致,可以用来对比。...创建,先说说它布局创建,直接代码了,很简单一个ListView宽、高和id: image.png 布局文件创建完之后就是我们MainActivity中注册了,一些自己理解注释都在下面...,能帮助理解: Screenshot (21).png  看了上面的代码和注释,也会知道,我们重点就在这个适配器,要是我们用系统ArrayAdapter,我们再通过initFruits方法创建好数据源之后...,用下面的方法:         ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item...iOS中,(如果你懂iOS)你肯定知道我们TableView用很多时候,需要你去自定义Cell,我们下面说自定义ListView适配器就是我们iOS中说自定义Cell,这个才是重点,相信你也知道

    1.1K90

    基础干货(三):数据库学习

    ---- title: 基础干货(三):数据库学习 copyright: true categories: 基础干货 date: 2018-01-10 19:35:26 tags: [Android...listview显示数据列表步骤: 1、布局文件中添加一个listview控件 2、代码中找到这个listview控件 3、创建一个数据适配器为listview填充数据 ArrayAdapter...使用ArrayAdapterlistview填充数据步骤: 1、布局文件中添加ListView 2、代码中初始化这个listview控件 3、调用listview.setAdapter()填充数据...//使用适配器为listview填充数据 //new ArrayAdapter:context 上下文,resourceId 条目布局文件资源ID,object[] 要显示数据 lv.setAdapter...使用ArrayAdapterlistview填充数据步骤: 1、布局文件中添加ListView 2、代码中初始化这个listview控件 3、调用listview.setAdapter()填充数据

    2.8K20

    Android适配器作用

    ListAdapter列表项显示配置: 一、 通过简单XML文件配置 默认ListAdapter希望提供ListView每一项 xml布局配置文件中只有一个TextView。...重写自定义对象toString()方法,来保证ListView显示。...populated(显示) ListView中Item项复杂布局xml文件中用来显示ArrayAdapter中数据那个TextView public ArrayAdapter (Context...自定义数组xml文件标识id号,也就是ArrayAdapter要绑定到ListVIew数据 textViewResourceId:用于显示数组数据布局文件id标识号(注意:该布局文件中只能有一个...其实在Android中有很多这样例子,继承某个类时会默认让你Override一些方法,这些方法就是父类中没有实现接口方法。

    99210

    我对MVP理解

    MVP框架浅谈 最近部门变革,一口气招了5个新人,我们之前ABC组也已经全部取消,重组拆分为研发/技术支持/新手村,我暂时分在研发组,负责音乐/视频代码重构,代码重构目的一个是为了适配9.0...,三个部门各司其职,View只负责控件控制,Module负责处理逻辑,Presenter是个中间纽带传话关系,为了方便,现在我音乐做法是将Module和Presenter合并起来,将逻辑层与显示层区分开...) findViewById(R.id.mvp_listview); mvpListView.setOnItemClickListener(this); pb = (ProgressBar...pb.setVisibility(View.GONE); } @Override public void setListItem(List data) { ArrayAdapter...adapter = new ArrayAdapter(MvpActivity.this, android.R.layout.simple_list_item_1, data); mvpListView.setAdapter

    48110

    Android  Spinner列表选择框应用

    Android Spinner列表选择框应用 Spinner 是 Android 列表选择框,不过 spinner 并不需要显示下拉列表,而是相当于弹出一个菜单供用户选择。...ArrayAdapter 来设置适配器,但是对于稍微复杂数据 ArrayAdapter 就无法满足需求了,这时需要使用 SimpleAdapter 来做适配。...arg0) { } } Spinner 弹出列表事件上是 listview,所以 listview 各种方法都可以用在 Spinner 弹出窗口这里,当时也可以自定义数据源,自定义 Adapter...Spinner 初始化时会自动调用一次 OnItemSelectedListener 事件,这是因为系统会自动加载默认值造成。...//事件注册之前调用,一般指定第0个为默认值 spinner.setSelection(0, true); 以上就是对Android Spinner实例详解,如有疑问,请留言或者到本站社区交流讨论,

    1.8K41

    Android开发之自定义ListView(UITableViewController)

    创建模拟数据 ListView显示是一个数据集合,所以我们要先创建一个Array, 其中存放着ListView显示数据。...数据显示 第三部要做就是ListView显示上面数组中值了。...每个Cell上显示一个元素,Android开发中,为了ListView显示数据,引入了数据适配器概念,这个数据适配其其实就是对应着iOS开发中TableViewCell。...Android中ArrayAdapter其实就是Cell不同模板,我们把数据赋值给数据适配器,数据适配器就会把要显示数据放到相应Cell上,并且ListView上展示。...iOS开发中,如果想分析其他App中UI实现方式,可以使用一个叫Reveal神器,至于中有木有类似强大UI分析神器,我就不可而知了。

    1.3K80

    Android UI 中 ListView列表控件示例

    它可以通过泛型来指定要适配数据类型,然后构造函数中把要适配数据传入即可。ArrayAdapter 有多个构造函数重载,我们应该根据实际情况选择最合适一种。...我们使用了 android.R.layout.simple_list_item_1作为 ListView 子项布局 id,这是一个 Android内置布局文件,里面只有一个 TextView,用于显示一段文本...ListView 示例 2 定制界面 现在让 ListView 可以显示更加丰富内容。 准备好一组图片,分别对应上面提供每一种猫,我们要让这些猫名称旁边都有一张图。...,又定义了一个 TextView 用于显示名称。...另外又重写了 getView() 方法,这个方法每个子项被滚动到屏幕内时会被调用。

    1.6K20

    开发_浅谈ListView(SimpleAdapter数组适配器)

    开发_浅谈ListViewArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一、MainActivity.java...= (ListView) findViewById(R.id.listView1); 36 //定义并初始化保存图片ID数组 37 int [] imageId =...listItems.add(map); 51 }         //参数一context:上下文         //参数二data:数据源 ,一个Map组成List...集合         //参数三resource:列表项布局文件         //参数四from:Map键名         //参数五to:绑定数据视图中id,与from成对应关系 52...android:adjustViewBounds="true" // 用于布局列表项内容,采用水平线性布局,并在该布局管理器中添加一个ImageView组件和一个TextView组件,分别用于显示列表项中图标和文字

    699100

    Android开发:ListView、AdapterView、RecyclerView全面解析

    提供 它派生子类在用法上也基本相似,只是显示上有一定区别,因此把他们也归为一类。...disabled:取消transcriptMode模式;默认normal:当接受到数据集合改变通知,并且仅仅当最后一个选项已经显示屏幕时候,自动滑动到底部。...ArrayAdapter 定义 简单、易用Adapter,用于将数组绑定为列表项数据源,支持泛型操作 步骤 1. xml文件布局上实现ListView <?...MainActivity上定义一个链表,将所要展示数据以存放在里面 3. 构造ArrayAdapter对象,设置适配器 4....总结 本文对ListView、AdapterView、RecyclerView进行了全面整理,接下来我会介绍继续介绍Android开发中相关知识,有兴趣可以继续关注Carson_Ho开发笔记 -

    3.5K30
    领券