Add align to api to UIElement
fix settings page bug where silder were not getting correct Y value set
This commit is contained in:
parent
4a5c83c8b9
commit
6343a48be1
3 changed files with 17 additions and 3 deletions
|
@ -68,6 +68,14 @@ lv_coord_t UIElement::GetX() {
|
|||
return lv_obj_get_x(mLvglSelf);
|
||||
}
|
||||
|
||||
void UIElement::AlignTo(UIElement *anElementToAlignTo, lv_align_t anAlignment,
|
||||
lv_coord_t aXoffset, lv_coord_t aYOffset) {
|
||||
LvglResourceManger::GetInstance().AttemptNow([=] {
|
||||
lv_obj_align_to(mLvglSelf, anElementToAlignTo->mLvglSelf, anAlignment,
|
||||
aXoffset, aYOffset);
|
||||
});
|
||||
}
|
||||
|
||||
void UIElement::SetVisiblity(bool aVisible) {
|
||||
if (aVisible == IsVisible()) {
|
||||
return;
|
||||
|
|
|
@ -31,6 +31,9 @@ public:
|
|||
lv_coord_t GetY();
|
||||
lv_coord_t GetX();
|
||||
|
||||
void AlignTo(UIElement *anElementToAlignWith,lv_align_t anAlignment,
|
||||
lv_coord_t aXoffset = 0, lv_coord_t aYOffset = 0);
|
||||
|
||||
virtual void AddElement(UIElement *anElement);
|
||||
|
||||
ID GetID() { return mId; };
|
||||
|
|
|
@ -14,10 +14,13 @@ void SettingsPage::AddSlider() {
|
|||
auto fakeSlider = std::make_unique<UI::Widget::Base>(
|
||||
lv_slider_create(UI::Screen::BackgroundScreen::getLvInstance()));
|
||||
fakeSlider->SetHeight(lv_pct(10));
|
||||
|
||||
fakeSlider->SetWidth(GetWidth());
|
||||
auto sliderHeight = fakeSlider->GetHeight();
|
||||
fakeSlider->SetY(sliderHeight * GetNumWidgets());
|
||||
if (sliders.empty()) {
|
||||
fakeSlider->SetY(0);
|
||||
} else {
|
||||
auto nextY = sliders.back()->GetY() + sliders.back()->GetHeight();
|
||||
fakeSlider->SetY(nextY + 10);
|
||||
}
|
||||
|
||||
sliders.push_back(AddWidget(std::move(fakeSlider)));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue