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