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

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

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.