【问题标题】:layout.xml different behavior depending on API level (25+ works as it supposed to work, and 24- works bad)layout.xml 不同的行为取决于 API 级别(25+ 工作正常,24-工作不好)
【发布时间】: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


    【解决方案1】:

    您好,请尝试以下代码一次,如果您遇到任何问题,请告诉我

    <?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"
        >
    
    
        <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="20sp"
    
            />
    
        <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="20sp"
            />
    
    
        <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_marginEnd="10dp"
            android:layout_weight="2"
            android:textSize="20sp"
            android:gravity="end"
    
            />
    </LinearLayout>
    

    或者您可以使用百分比相对布局以获得更好的结果。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2019-06-24
    相关资源
    最近更新 更多