Android Линейный макет с адаптацией высоты к элементам - PullRequest
0 голосов
/ 03 августа 2020

У меня есть следующий горизонтальный линейный макет внутри вертикального линейного макета:

enter image description here

<?xml version="1.0" encoding="utf-8"?>
   

И программно я установил элементы в своем адаптере следующим образом:

 for (Pokemon pokemon : pokemonTeam.getPokemonList()) {
        String pokemonNickname = pokemon.getNickname();
        String pokemonName = pokemon.getName();
        ImageView tvPokemonSprite = new ImageView(mContext);
        int color = PokemonUtils.getDominantColorFromPokemon(pokemon.get_id(),mContext);
        tvPokemonSprite.setImageResource(PokemonUtils.getPokemonSugimoriImageById(pokemon.get_id(), mContext));
        tvPokemonSprite.setScaleType(ImageView.ScaleType.FIT_CENTER);
        PokemonUtils.setResourceAndBorderBackgroundColorToElementFromColor(tvPokemonSprite,R.drawable.circle_shape,color,PokemonUtils.lighterColor(color, DARK_FACTOR));
        TableLayout.LayoutParams layout = new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1);
        tvPokemonSprite.setLayoutParams(layout);
        holder.teamSpritesLinearLayout.addView(tvPokemonSprite);
    }

Однако, если я поверну телефон, элементы не будут полностью помещаться в линейной компоновке, нижняя и верхняя часть обрезана наполовину, также если горизонтальная линейная компоновка имеет только 1 покемона, вместо того, чтобы адаптироваться к 1 слоту, она расширяет ВЕСЬ вид (как вы можете видеть с charizard)

введите описание изображения здесь

1 Ответ

1 голос
/ 03 августа 2020

Добавьте в изображение ниже код:

tvPokemonSprite.setAdjustViewBounds(true)

Надеюсь, сработает для вас.

...