TableRow中的SeekBar宽度?

时间:2012-04-17 03:51:20

标签: android custom-controls android-tablelayout

我需要创建一个控件,以便在工作中更容易开发一些屏幕 控件非常简单,只需两个按钮和一个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

3 个答案:

答案 0 :(得分:1)

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

按钮:

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

搜索条:

setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 10f));

答案 1 :(得分:1)

我试图找到你问题的解决方案。如果您在搜索栏上将权重设置为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);
    }
}

答案 2 :(得分: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);

它为我工作......