Android 视图布局怪异

Android 视图布局怪异,android,android-linearlayout,android-view,layoutparams,Android,Android Linearlayout,Android View,Layoutparams,有谁能告诉我为什么会这样吗 我要做的是让它们都居中对齐,不管有多少个。它在相当多的时间内工作得很好,甚至只在1个以上的时间内工作,但4个似乎可以做到这一点。我将它们添加到代码中,如下所示: LinearLayout guessHolders = (LinearLayout)findViewById(R.id.guessHolders); guessHolders.removeAllViews(); currentLetterPosition = 0; fina

有谁能告诉我为什么会这样吗

我要做的是让它们都居中对齐,不管有多少个。它在相当多的时间内工作得很好,甚至只在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);
    }
LinearLayout guessHolders=(LinearLayout)findViewById(R.id.guessHolders);
guessHolders.removeallview();
currentLetterPosition=0;
最终位图emptyLetterHolder=BitmapFactory.decodeResource(getResources(),R.drawable.letter_holder);

对于(int i=0;i修正了它。如下所示:

        LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(Globals.defaultLetterSizes[mBlockSize], 
                Globals.defaultLetterSizes[mBlockSize], 0);
        parms.gravity = Gravity.CENTER_HORIZONTAL;
        tmp.setLayoutParams(parms); 
因此,我将权重设置为零,剩下的留给操作系统。现在对所有操作系统都有效。太棒了


干杯

当设置重量时,加权尺寸必须是0dp宽/高相对值,而不是线性布局,并查看发生了什么相对值不能使用重量属性如果我将宽度/高度设置为0dp,则完全没有显示-我不认为亲属可以使用加权。@DerGolem我知道,他必须更改整个代码,如果他想使用RelativeLayout,无论如何,很高兴它成功了。