0

カスタムのナンバーピッカーを作成しています。垂直に設定するとすべてが正常に見えますが、水平に設定すると要素が整列しません。

ボタンにはテキストがあり、画像を追加します。
プラスとマイナスのボタンなし:

ここに画像の説明を入力してください

ボタン付き

ここに画像の説明を入力してください

これは私のコードです:

private final int ELEMENT_HEIGHT = 50;
private final int ELEMENT_WIDTH = 65; 

....。

public NumberPicker(Context context, int min, int max,int orientation) {
    super(context);

this.setLayoutParams(new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    LayoutParams elementParams = new LinearLayout.LayoutParams(
            ELEMENT_WIDTH, ELEMENT_HEIGHT);

    // init the individual elements
    initDecrementButton(context);
    initValueEditText(context);
    initIncrementButton(context);

    this.setOrientation(orientation);

    if (orientation == VERTICAL) {
        addView(increment, elementParams);
        addView(valueText, elementParams);
        addView(decrement, elementParams);
    } else {
        addView(decrement, elementParams);
        addView(valueText, elementParams);
        addView(increment, elementParams);
    }
}


private void initIncrementButton(Context context) {
    increment = new Button(context);
    increment.setTextSize(15);
    increment.setText("Max: " + getMaximum());
    increment.setCompoundDrawablesWithIntrinsicBounds(null,null , null, context.getResources().getDrawable(R.drawable.plus)); 

 }

 private void initDecrementButton(Context context) {
    decrement = new Button(context);
    decrement.setTextSize(15);
    decrement.setText("Min: " + getMinimum());
    decrement.setCompoundDrawablesWithIntrinsicBounds(null, context.getResources().getDrawable(R.drawable.minus),null ,null); 

 }

どうすればこれを修正できますか?どうも :)

//編集

私はそれをこのように修正しました:

if (orientation == VERTICAL) {
        elementParams.gravity = Gravity.CENTER_HORIZONTAL;
        addView(increment, elementParams);
        addView(valueText, elementParams);
        addView(decrement, elementParams);
    } else {
        elementParams.gravity = Gravity.CENTER_VERTICAL;
        addView(decrement, elementParams);
        addView(valueText, elementParams);
        addView(increment, elementParams);
    }
4

2 に答える 2

2

LayoutParamsを初期化した後、これを試してください。

LayoutParams elementParams = new LinearLayout.LayoutParams(ELEMENT_WIDTH, ELEMENT_HEIGHT);
elementParams.gravity = Gravity.CENTER_VERTICAL;

次に、今行っているようにバインドします。

于 2012-07-20T07:20:07.057 に答える
0

android:layout_gravity="center_vertical"で要素を設定してみてください。

于 2012-07-20T07:10:26.343 に答える