【发布时间】:2020-09-02 16:21:43
【问题描述】:
我的 ListView 有一个自定义适配器布局资源文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@android:color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="30sp"
>
<TextView
android:gravity="center"
android:id="@+id/place"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="sans-serif-light"
android:textColor="@android:color/black"
android:textSize="20dp"
/>
<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:fontFamily="sans-serif-light"
android:textColor="@android:color/black"
android:textSize="20dp"
/>
<TextView
android:id="@+id/rating"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:textColor="@android:color/black"
android:layout_marginRight="10dp"
android:layout_weight="2"
android:textSize="20sp"
android:gravity="right"
/>
</LinearLayout>
android studio 中的设计部分显示了我想要的这种布局。当我在 API 级别 25 或更高级别的设备上运行它时,我的 ListView 也会按照我的意愿显示。但是当涉及到 API 级别 24 及更低级别时,我的布局文件的“输出”完全被破坏了。我会附上2个截图。
1) 预期行为(API 级别 25+):
2) 失败的行为,一切都被破坏了(API 级别 24-):
我的适配器代码:
package com.SamsungProject.SamsungProject;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.List;
public class PlayerRatingAdapter extends ArrayAdapter<PlayerRating> {
private static final String TAG = "PlayerRatingAdapter";
private Context mContext;
int mResource;
public PlayerRatingAdapter(@NonNull Context context, int resource, @NonNull List<PlayerRating> objects) {
super(context, resource, objects);
mContext = context;
mResource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView,@NonNull ViewGroup parent) {
int place = getItem(position).getPosition();
String name = getItem(position).getName();
int rating = getItem(position).getRating();
PlayerRating rating_of_player = new PlayerRating(name, rating, place);
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource, parent, false);
TextView placeView = (TextView) convertView.findViewById(R.id.place);
TextView nameView = (TextView) convertView.findViewById(R.id.name);
TextView ratingView = (TextView) convertView.findViewById(R.id.rating);
placeView.setText(Integer.toString(place));
nameView.setText(name);
ratingView.setText(Integer.toString(rating));
return convertView;
}
}
有什么问题以及如何消除布局行为的差异?
【问题讨论】:
标签: android layout android-api-levels