1

仕事でいくつかの画面を開発しやすくするために、コントロールを作成する必要があります。
コントロールは非常にシンプルで、2つのボタンと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

ビューの重み値を設定すると、うまくいくはずです。

ボタンの場合:

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 に答える
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);
    }
}
于 2012-04-17T05:30:56.350 に答える
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 に答える