【问题标题】:Remove space between childrens in a LinearLayout删除 LinearLayout 中子元素之间的空间
【发布时间】:2016-11-30 20:32:04
【问题描述】:

我正在开发一款有趣的 Android 游戏,但我无法删除 LinearLayout 中 ImageView 之间的空间。 这些布局中没有定义数量的 ImageView,这就是我不处理 XML 文件的原因。 因此,我在我的 Java 代码中创建了每个 ImageView,并将它们添加到我的布局中。 但是它们之间有空格:Spaces between ImageViews(蓝色/红色/绿色方块是 ImageViews)。 我开始使用 GridLayout 来做到这一点,但我无法删除那个空白空间,所以我尝试将一些 LinearLayouts(水平)放入其他 LinearLayout(垂直)。

我已经尝试了很多方法,比如 setMargin 和 Padding 为 0,创建一个 LayoutParams 来删除它们,等等……但是没有用。

谢谢!

编辑:这是我的代码

iv = new ImageView[cm.getNbRow()][cm.getNbColumn()];    //cm is the map object

LinearLayout[] linearTab = new LinearLayout[cm.getNbColumn()];
for(int i=0; i<cm.getNbRow(); i++) {
    linearTab[i] = new LinearLayout(this);
    linearTab[i].setOrientation(LinearLayout.HORIZONTAL);
}

for(int i=0; i<cm.getNbRow(); i++) {
    for(int ii = 0; ii < cm.getNbColumn(); ii++) {
        if(cm.getMap()[i][ii] == 1) {
            iv[i][ii] = new ImageView(this);
            iv[i][ii].setImageResource(R.drawable.wall);
        } else if(cm.getMap()[i][ii] == 2) {
            p = new Player(i, ii, this, cm);
            iv[i][ii] = new ImageView(this);
            iv[i][ii].setImageResource(R.drawable.player);
        } else if(cm.getMap()[i][ii] == 3) {
            iv[i][ii] = new ImageView(this);
            iv[i][ii].setImageResource(R.drawable.stop);
        } else {
            iv[i][ii] = new ImageView(this);
            iv[i][ii].setImageResource(R.drawable.path);
        }
        linearTab[i].addView(iv[i][ii]);        //Horizontal LinearLayout
    }
    ll.addView(linearTab[i]);                   //Vertical LinearLayout
}

编辑 2:Android Studio 为 ImageViews 添加了透明边框(不知道为什么),但我已经通过编辑生成的图像并为透明部分着色来解决它。

【问题讨论】:

  • 请提供添加图像视图的代码!
  • 请分享您的代码
  • 试试imageView.setScaleType(ImageView.ScaleType.FIT_XY);
  • 已添加代码。我试过setScaleType(),但它不起作用
  • @Rallph 你确定你的drawables不包括空白空间吗?

标签: java android android-layout imageview android-linearlayout


【解决方案1】:

当您导入图像时,您需要确保选项“Trim”设置为“yes”并且“Padding”设置为 0%。这应该确保图像周围没有透明区域。

【讨论】:

  • 修剪设置为“否”,但即使设置为“是”,它仍然为我的图像设置透明边框(填充为 0% 或 -10%)
  • @Rallph 然后手动添加图像。这可能是 Android Studio 中的一个错误。
  • 它通过自己编辑实际值并删除边框来工作
【解决方案2】:

你试过android:adjustViewBounds="true"吗?

【讨论】:

  • 我的 ImageViews 没有 XML 文件,myImageView.setAdjustViewBounds(true); 不起作用
  • 试试:myImageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);(不要移除adjustViewBounds)
  • 我也尝试过使用 GridLayout,但问题不是来自布局