Android线性布局使高度适应元素

Posted

技术标签:

【中文标题】Android线性布局使高度适应元素【英文标题】:Android Linear Layout adapting height to elements 【发布时间】:2020-11-23 15:35:41 【问题描述】:

我在垂直线性布局中有以下水平线性布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_marginBottom="4dp">

<LinearLayout
    android:layout_
    android:layout_
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:background="@color/White"
    android:orientation="vertical">

    <TextView
        android:id="@+id/pokemonTeambuilderTitleTextView"
        android:layout_
        android:layout_
        android:gravity="top|start"
        android:paddingStart="10dp"
        android:paddingTop="10dp"
        android:paddingEnd="10dp"
        android:paddingBottom="5dp"
        android:text="@string/placeholder"
        android:textColor="@color/Black"
        android:textSize="16sp"
        android:textStyle="bold" />

    <LinearLayout
        android:id="@+id/pokemonTeambuilderSpritesLayout"
        android:layout_
        android:layout_
        android:gravity="center"
        android:orientation="horizontal">

    </LinearLayout>

</LinearLayout>

我以编程方式在我的适配器中设置元素:

 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】:

将以下代码添加到 imageview:

tvPokemonSprite.setAdjustViewBounds(true)

我希望对你有用。

【讨论】:

以上是关于Android线性布局使高度适应元素的主要内容,如果未能解决你的问题,请参考以下文章

线性布局

如何在嵌套线性布局中使 imageButton 的高度占屏幕尺寸的 25%。 Android XML 横向布局

Android水平线性布局 - 包装元素[重复]

线性布局LinearLayout

如何使线性布局坚持到 Android 中的 ImageView?

Android Studio线性布局元素Listen