无法设置动态创建的SeekBar的最小宽度。

5

这是我用来生成视图对象的代码:

        // creates the seekBar
        sBGauge = new SeekBar(this);
        sBGauge.setMax(depthL - 1);
        sBGauge.setMinimumWidth(150);
        sBGauge.setId(2000 + i);
        sBGauge.setOnSeekBarChangeListener(this);

无论我把sBGauge.setMinimumWidth()设置为多少,它似乎总是只有大约20的宽度。
有什么想法吗? 谢谢。
编辑:为了提供更多信息,我在一个表格行中的两个文本视图之间使用这个seekbar。
顶一下。
2个回答

2

@Amit Hooda 您的解决方案没有解决我的问题,但它确实引导我找到了解决方案。

我需要做的是将动态创建的TableRow更改为TableLayout中的LinearLayout。然后,我就能够获得屏幕宽度并减去我的文本视图,然后使用结果数字设置我的SeekBar的宽度,以解决这个问题。

// gets the width of the screen to set the seekbar width
    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();
width = width - 170;

LinearLayout lL = new LinearLayout(this);
// creates the seekBar
        sBGauge = new SeekBar(this);
        sBGauge.setMax(depthL - 1);
        sBGauge.setId(2000 + i);
        sBGauge.setLayoutParams(new LinearLayout.LayoutParams(width, 50, 1f));
        sBGauge.setOnSeekBarChangeListener(this);

你从未发布过你的布局,基于你分享的内容,我回复了你,很高兴它带来了你期待的解决方案。 - Amit Hooda

1

试试这个

    LayoutParams lp = new LayoutParams(150, 150);
    sBGauge.setLayoutParams(lp);

您可以根据需要更改值150和150。


我在布局中还有TextView和Button,所以我目前有:'tL.addView(tR, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));' 这个更改会影响它们吗?@amit - deerkiller11
不,我认为不是这样的,因为我们只是设置了SeekBar的布局参数。 - Amit Hooda
当我尝试这样做并删除了我的setMinimumWidth时,它就消失了。 - deerkiller11
你的布局中有使用到权重吗? - Amit Hooda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接