I have an custom adapter layout resourse file for my 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>
Design section in android studio is showing this layout as I want it to be. When I run it on devices with API level 25 and higher my ListView shows as I wanted it to be as well. But when it comes to API level 24 and lower, "output" of my layout file is totally broken. I'll attach 2 screenshot.
1) Expected behavior (API level 25+):
2) Failed behavior, everything is broken (API level 24-):
Code of My Adapter:
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;
}
}
What is the problem and how to get rid of differences in layout's behavior?