是因为ArrayAdapter默认使用了系统提供的布局文件android.R.layout.simple_list_item_1,该布局文件中的TextView设置了较大的字体大小和行高,导致ListView中的每个项显示过大。
为了解决这个问题,可以自定义一个适配器,并指定自定义的布局文件来替代默认的布局文件。以下是一个示例:
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;
}
}
<?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>
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)
领取专属 10元无门槛券
手把手带您无忧上云