【问题标题】:Android change height depending on screen rotation /width in AdapterAndroid根据适配器中的屏幕旋转/宽度改变高度
【发布时间】:2020-08-10 09:18:45
【问题描述】:

我有以下布局:

每个 Pokemon Team 行的大小固定为 100dp:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pokemonTeambuilderContainer"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/pokemonTeambuilderTitleTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/untitled"
        android:textSize="16sp"
        android:textStyle="bold" />

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

</LinearLayout>
</androidx.cardview.widget.CardView>

每一行中的口袋妖怪都是在这个适配器中创建的图像视图:

  @Override
public void onBindViewHolder(ViewHolder holder, int position) {
    PokemonTeam pokemonTeam = mData.get(position);

    for (Pokemon pokemon : pokemonTeam.getPokemonList()) {
        CircularImageView ivPokemonSprite = new CircularImageView(mContext);
        int color = PokemonUtils.getDominantColorFromPokemon(pokemon.get_id(), mContext);
        ivPokemonSprite.setBorderColor(color);
        ivPokemonSprite.setBorderWidth(4);

        ivPokemonSprite.setCircleColor(PokemonUtils.lighterColor(color, DARK_FACTOR));
        Picasso.get().load(PokemonUtils.getPokemonSugimoriImageById(pokemon.get_id(), mContext)).fit().centerCrop().into(ivPokemonSprite);
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT, 1);
        layoutParams.setMargins(3, 10, 3, 10);
        ivPokemonSprite.setLayoutParams(layoutParams);
        holder.teamSpritesLinearLayout.addView(ivPokemonSprite);
    }

    String pokemonTeamName = pokemonTeam.getName();
    if (pokemonTeamName != null && !pokemonTeamName.isEmpty()) {
        holder.teamTitleTextView.setText(pokemonTeam.getName());
    }

}

我的问题是当我旋转设备时:

我希望至少有 200dp 的高度以使每一行更大(否则我认为在平板电脑等设备中它看起来会非常小),如下所示:

【问题讨论】:

  • 你必须在你的 project->res 文件夹中创建 2 个布局文件夹。 1- 布局 2- 布局-大。布局 ID 或视图必须相同。

标签: android android-linearlayout android-layout-weight linearlayoutmanager


【解决方案1】:

你可以为不同的设备选择不同的布局,我认为这是最可靠的方式https://developer.android.com/guide/practices/screens_support

您还可以检查方向并相应地设置高度https://stackoverflow.com/a/2799001/12506486

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多