1

我需要创建一个控件,以便在工作中更轻松地开发一些屏幕。
控件很简单,只有两个按钮和一个 SeekBar。仅用于增加或减少 SeekBar 值的按钮。

这是我的代码:

public class SeekbarCheckbox extends TableLayout {
private SeekBar _Seekbar;
private CheckBox _CheckBox;
private TableRow _tr;

public SeekbarCheckbox(Context context, int max) {
    super(context);

     _tr = new TableRow(context);

     Button bt1 = new Button(context);
     bt1.setText("-");
     _tr.addView(bt1);

     _Seekbar = new SeekBar(context);
     _Seekbar.setMax(max);
     _tr.addView(_Seekbar);

     Button bt2 = new Button(context);
     bt2.setText("+");
     _tr.addView(bt2);


     this.addView(_tr, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

}

}

问题是,当我在应用程序中使用这个控件时,我得到了一个无用宽度的 SeekBar。我分享一张图片以查看结果。

我不能发图片,所以我分享一个链接。 http://img685.imageshack.us/img685/6756/controlk.png

4

3 回答 3

1

我试图找到您的问题的解决方案。如果您在 seekbar 上将 weight 设置为 1,那么它将获取所有空间,接受按钮所需的最小空间。对我来说,这段代码运行良好。

public class SeekbarCheckbox extends TableLayout {
    private SeekBar _Seekbar;
    private CheckBox _CheckBox;
    private TableRow _tr;

    public SeekbarCheckbox(Context context, int max) {
        super(context);

         _tr = new TableRow(context);

         Button bt1 = new Button(context);
         bt1.setText("-");
         _tr.addView(bt1);

         _Seekbar = new SeekBar(context);
         _Seekbar.setMax(max);
         TableRow.LayoutParams ob = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,
                                                              LayoutParams.WRAP_CONTENT,
                                                              1);
         _tr.addView(_Seekbar, ob);

         Button bt2 = new Button(context);
         bt2.setText("+");
         _tr.addView(bt2);

         _tr.setBackgroundColor(Color.BLUE);
         this.addView(_tr);
    }
}
于 2012-04-17T05:30:56.350 回答
1

为视图设置权​​重值应该可以解决问题。

对于按钮:

setLayoutParams(new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 2f));

搜索栏:

setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 10f));
于 2012-04-17T04:37:05.533 回答
0

替换您的布局代码,如下所示

    public SeekBarcheckbox(Context context, int max) {
    super(context);

     _tr = new TableRow(context);
     _tr.setWeightSum(10f);
     Button bt1 = new Button(context);
     bt1.setText("-");
     TableRow.LayoutParams layoutParams=new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,2f);
     _tr.addView(bt1, layoutParams);
     _Seekbar = new SeekBar(context);
     _Seekbar.setMax(max);
   TableRow.LayoutParams layoutParams1=new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT,7f);
     _tr.addView(_Seekbar,layoutParams1);
     Button bt2 = new Button(context);
     bt2.setText("+");
     LinearLayout.LayoutParams layoutParams3=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,1f);
     _tr.addView(bt2,layoutParams3);
     LinearLayout.LayoutParams layoutParams2=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
     this.addView(_tr,layoutParams2);

}

我在活动中使用了以下代码

    seekBarcheckbox=new SeekBarcheckbox(this, 100);
    setContentView(seekBarcheckbox);

它为我工作......

于 2012-04-17T05:33:37.030 回答