Внедрение пользовательского числового указателя в действие

У меня этот код в действии:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 final MyNumberPicker np = new MyNumberPicker(this);
 np.setOnScrollListener(new NumberPicker.OnScrollListener() {
 @Override
 public void onScrollStateChange(NumberPicker view, int scrollState) {
 if (scrollState == NumberPicker.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL){
 np.setBottomFadingEdgeStrength(0.9f);
 np.setBottomFadingEdgeStrength(0.9f);
 } else if (scrollState == NumberPicker.OnScrollListener.SCROLL_STATE_IDLE){
 np.setBottomFadingEdgeStrength(1.0f);
 np.setBottomFadingEdgeStrength(1.0f);
 }
 //also you can handle SCROLL_STATE_FLING if you want
 }
 });
}
}

И этот код для моего пользовательского класса:

public class MyNumberPicker extends NumberPicker {

private float bottomFadingEdgeStrength = 1.0f;
private float topFadingEdgeStrength = 1.0f;

public MyNumberPicker(Context context) {
 super(context);
}

public MyNumberPicker(Context context, AttributeSet attrs) {
 super(context, attrs);
}

public MyNumberPicker(Context context, AttributeSet attrs, int defStyle) {
 super(context, attrs, defStyle);
}

@Override
protected float getBottomFadingEdgeStrength() {
 return bottomFadingEdgeStrength;
}

@Override
protected float getTopFadingEdgeStrength() {
 return topFadingEdgeStrength;
}

void setTopFadingEdgeStrength(float strength){
 topFadingEdgeStrength = strength;
}

void setBottomFadingEdgeStrength(float strength){
 bottomFadingEdgeStrength = strength;
}
}

Дело в том, что я не знаю, как добавить этот элемент выбора в действие. Другими словами, я не могу заставить его работать в моей программе. Итак, как мне изменить свой код в активности, чтобы сделать это. Насколько я могу судить, я не могу использовать findViewById(R.id.numberpicker1). Пожалуйста помоги.

1 ответ

В вашем макете вместо того, чтобы добавить NumberPicker как вы обычно:

Вы бы использовали тег, который указывает на ваш пользовательский класс.

Итак, если вы добавили это в свой макет activity_main, вы можете инициализировать его с помощью View.findViewById:

setContentView(R.layout.activity_main);
final MyNumberPicker np = (MyNumberPicker) findViewById(R.id.numberpicker1);

licensed under cc by-sa 3.0 with attribution.