【问题标题】:View layout weirdness查看布局怪异
【发布时间】:2014-07-21 00:41:49
【问题描述】:

谁能告诉我为什么会这样?

我想要做的是让它们都居中对齐,不管有多少。它适用于很多人,甚至只适用于另外 1 个,但 4 个似乎可以做到这一点。我在代码中添加它们,在这里:

    LinearLayout guessHolders = (LinearLayout)findViewById(R.id.guessHolders);
    guessHolders.removeAllViews();
    currentLetterPosition = 0;

    final Bitmap emptyLetterHolder = BitmapFactory.decodeResource(getResources(), R.drawable.letter_holder);

    for(int i=0; i<Globals.mUser.getLevel().getSolution().length(); i++)
    {
        final EmptyLetter tmp = new EmptyLetter(this, i);
        tmp.setImageBitmap(emptyLetterHolder);
        LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(Globals.defaultLetterSizes[mBlockSize], 
                Globals.defaultLetterSizes[mBlockSize], 1);
        parms.weight = 1;
        parms.gravity = Gravity.CENTER_HORIZONTAL;
        tmp.setLayoutParams(parms);         
        tmp.setAdjustViewBounds(false);         
        tmp.setOnClickListener(new View.OnClickListener() {             
            @Override
            public void onClick(View v) {
                Log.i("PP2", tmp.getId() + " << the clicked empty letter holder id");
                currentLetterPosition = tmp.getId();
                tmp.setImageBitmap(emptyLetterHolder);
                setChosenLetter(tmp.getId(), '\u0000');
            }
        });

        currentEmpties.add(tmp);            
        guessHolders.addView(tmp);
    }

我尝试设置框视图的gravityweightsumwidthheight 以及父容器LinearLayout,但似乎没有任何改变。

非常感谢任何帮助!

【问题讨论】:

  • 设置权重时,加权尺寸必须为0dp宽/高
  • 试试 RelativeLayout 而不是 LinearLayout 看看会发生什么
  • RelativeLayouts 不能使用 weight 属性
  • 如果我将宽度/高度设置为 0dp,什么都不会显示 - 我认为亲属不能使用加权。
  • @DerGolem 我知道,如果他想使用 RelativeLayout,他将不得不更改整个代码,无论如何很高兴它成功了。

标签: android android-linearlayout android-view layoutparams


【解决方案1】:

修复它。带有以下内容:

        LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(Globals.defaultLetterSizes[mBlockSize], 
                Globals.defaultLetterSizes[mBlockSize], 0);
        parms.gravity = Gravity.CENTER_HORIZONTAL;
        tmp.setLayoutParams(parms); 

所以,我将 weighting 设置为零,其余的留给操作系统。现在适用于所有人。太棒了。

干杯

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 2014-11-10
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多