垂直滑动条的setProgress方法无法正常工作

4
寻找不会进展。所有的滑动条都变成零,但是TextView正确显示数值。
choosePreset.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View arg0)
    {   
        LayoutInflater inflater = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE));
        View customView = inflater.inflate(R.layout.preset_list, null, false);
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setView(customView);

        final String[] arr= getEqualizerPresets();

        ArrayAdapter<String> namesAA= new ArrayAdapter<String> ( context,R.layout.myitemlist,arr );
        ListView list = (ListView) customView.findViewById(R.id.mylist);
        list.setAdapter(namesAA);

        final AlertDialog ad = builder.create();

        list.setOnItemClickListener(new OnItemClickListener() 
        {
            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) 
            {
               Toast.makeText(context, "Position"+position, Toast.LENGTH_LONG).show();

               //equalizerWrapper.usePreset((short)arr[position]);

                    for(int v=0;v<eqSeeks.length;v++)
                    {
                    //  equalizerSeeks(v, eqSeeks[v]);
                        final int z = v;
                        eqSeeks[v].post(new Runnable()
                        {

                            @Override
                            public void run()
                            {
                                eqSeeks[z].setProgress( EQValues.presetValues[position][z]);
                            }
                        });

                    }

            //   eqSeeks[2].setProgress(150);

               setEqualizerPreset(position);

               ad.dismiss();

            }
        });

        ad.show();
    }
});

EQValues.presetValues[position][z] 在textView中显示正常,但是滑块无法达到进度。我尝试了很多方法,但是没有任何作用。

我尝试使用handler和postMethod,如下所示。但是seekBars仍未达到值。

编辑

我发现一个答案可以为垂直滑动条添加updateThumb方法,但这也没有起作用。这个问题是由于垂直滑动条引起的。

public void updateThumb(){
     onSizeChanged(getWidth(), getHeight(), 0, 0);
}

在设置进度后,请调用更新缩略图方法。
seekBar.setProgress((int) progress);
seekBar.updateThumb();

但这仍然没有解决我的问题。

3
updateThumb() 解决了我的问题... - Rumit Patel
谢谢 @Rumit..它对我有用 :) - Varun Chaudhary
Varun Chaudhar,谢谢你,虽然代码是我贴的……开个玩笑。 - Zar E Ahmer
@Nepster,解决方案可行。请将其发布为答案,以便其他人也可以得到帮助(y) - user4571931
3个回答

5

我遇到了另一个问题,但是给出的语句可以工作。

在VerticalSeekbar类中添加updateThumb方法,如下:

public void updateThumb()
{
     onSizeChanged(getWidth(), getHeight(), 0, 0);
}

设置进度后,调用更新缩略图方法。
seekBar.setProgress((int) progress);
seekBar.updateThumb();

3

实际上这样更好:

@Override
public void setProgress(int progress) {
    super.setProgress(progress);
    onSizeChanged(getWidth(), getHeight(), 0, 0);
}

现在,setProgress()方法应该可以正常工作了。

0

我只是以不同的方式声明了它。 而不是使用:

VerticalSeekbar mSeekbar;

我用了:
Seekbar mSeekbar;

现在mSeekbar.setProgress(progress)的功能已经正常了。

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