openharmony 鸿蒙 ndk-build-form-components

2026-08-25 浏览 (1)

Building Form Components

ArkUI NDK provides multiple form components, including Button, Slider, Toggle, Checkbox, CheckboxGroup, and Radio Button (Radio). These components are basic elements for user interaction and can be used to build diverse form UIs.

For APIs related to form components, see native_node.h.

This document provides guidance for NDK development of form components. Before the query, you need to access the ArkTS pages. For details, see Integrating with ArkTS Pages.

Button Component

The Button component is used to create a button that can be clicked. Multiple button types and styles are supported.

Creating the Button Component

The createNode API creates the Button component. The node type is ARKUI_NODE_BUTTON.

std::shared_ptr<NativeModule::ArkUIBaseNode> CreateButtonExample()
{
    auto column = std::make_shared<NativeModule::ArkUIColumnNode>();
    column->SetWidth(1, true);
    column->SetHeight(1, true);
    column->SetBackgroundColor(0x33ff0000);
    column->SetPadding(PARAM_20, false);
    auto button = std::make_shared<NativeModule::ArkUIButtonNode>();
    button->SetButtonLabel("This is a Button");
    button->SetMaxFontScale(1.0);
    auto circleBtn = std::make_shared<NativeModule::ArkUIButtonNode>();
    circleBtn->SetButtonLabel("Circle");
    circleBtn->SetButtonType(ARKUI_BUTTON_TYPE_CIRCLE);
    circleBtn->SetMargin(PARAM_20, false);
    column->AddChild(button);
    column->AddChild(circleBtn);
    // Add the column to the content.
    return column;
}

Setting the Button Type

Different button types can be implemented by setting the NODE_BUTTON_TYPE attribute, including normal, capsule, circle, and rounded rectangle buttons. For the enumerated values of button types, see ArkUI_ButtonType.

The following example sets the button type to ARKUI_BUTTON_TYPE_CIRCLE.

auto circleBtn = std::make_shared<NativeModule::ArkUIButtonNode>();
circleBtn->SetButtonLabel("Circle");
circleBtn->SetButtonType(ARKUI_BUTTON_TYPE_CIRCLE);
circleBtn->SetMargin(PARAM_20, false);

Button Attributes

The following table describes the attributes specific to the Button component. For details, see the enumerated values in ArkUI_NodeAttributeType.

AttributeDescription
NODE_BUTTON_LABELText label of the button.
NODE_BUTTON_TYPEButton type.
NODE_BUTTON_MIN_FONT_SCALEMinimum font scale ratio. This attribute is supported since API version 18.
NODE_BUTTON_MAX_FONT_SCALEMaximum font scale ratio. This attribute is supported since API version 18.

Slider Component

The Slider component is used to create a slider. You can drag the slider to select a value.

Creating the Slider Component

The createNode API creates the Slider component. The node type is ARKUI_NODE_SLIDER.

std::shared_ptr<NativeModule::ArkUIBaseNode> CreateSliderExample()
{
    auto column = std::make_shared<NativeModule::ArkUIColumnNode>();
    column->SetWidth(1, true);
    column->SetHeight(1, true);
    column->SetBackgroundColor(0x33ff0000);
    column->SetPadding(PARAM_20, false);
    auto sliderInSet = std::make_shared<NativeModule::ArkUISliderNode>();
    sliderInSet->SetSliderValue(PARAM_50);
    sliderInSet->SetSliderStep(PARAM_10);
    sliderInSet->SetSliderStyle(ARKUI_SLIDER_STYLE_IN_SET);
    sliderInSet->SetBlockColor(0xFF00FF00);
    sliderInSet->SetTrackColor(0xFFFFFF00);
    auto sliderOutSet = std::make_shared<NativeModule::ArkUISliderNode>();
    sliderOutSet->SetSliderValue(PARAM_50);
    sliderOutSet->SetSliderStep(PARAM_10);
    sliderOutSet->SetSliderStyle(ARKUI_SLIDER_STYLE_OUT_SET);
    sliderOutSet->SetMargin(PARAM_20, false);
    sliderOutSet->SetSliderDirection(ARKUI_SLIDER_DIRECTION_VERTICAL);
    sliderOutSet->SetIsReverse(true);
    sliderOutSet->SetIsShowSteps(true);
    column->AddChild(sliderInSet);
    column->AddChild(sliderOutSet);
    return column;
}

Setting the Slider Style

Two slider styles are supported. See ARKUI_SliderStyle for their enumerated values.

  • ARKUI_SLIDER_STYLE_OUT_SET: The slider is outside the slider bar (default value).
  • ARKUI_SLIDER_STYLE_IN_SET: The slider is inside the slider bar.

The following sample code creates the Slider component of the ARKUI_SLIDER_STYLE_IN_SET style and sets the colors of the slider and slider bar.

auto sliderInSet = std::make_shared<NativeModule::ArkUISliderNode>();
sliderInSet->SetSliderValue(PARAM_50);
sliderInSet->SetSliderStep(PARAM_10);
sliderInSet->SetSliderStyle(ARKUI_SLIDER_STYLE_IN_SET);
sliderInSet->SetBlockColor(0xFF00FF00);
sliderInSet->SetTrackColor(0xFFFFFF00);

Setting the Slider Direction and Step

You can set the sliding direction (horizontal or vertical), whether to reverse the slider, and whether to display the step scale.

auto sliderOutSet = std::make_shared<NativeModule::ArkUISliderNode>();
sliderOutSet->SetSliderValue(PARAM_50);
sliderOutSet->SetSliderStep(PARAM_10);
sliderOutSet->SetSliderStyle(ARKUI_SLIDER_STYLE_OUT_SET);
sliderOutSet->SetMargin(PARAM_20, false);
sliderOutSet->SetSliderDirection(ARKUI_SLIDER_DIRECTION_VERTICAL);
sliderOutSet->SetIsReverse(true);
sliderOutSet->SetIsShowSteps(true);

Slider Attributes

The following table describes the attributes specific to the Slider component. For details, see the enumerated values in ArkUI_NodeAttributeType.

AttributeDescription
NODE_SLIDER_VALUECurrent progress.
NODE_SLIDER_MIN_VALUEMinimum value.
NODE_SLIDER_MAX_VALUEMaximum value.
NODE_SLIDER_STEPSliding step.
NODE_SLIDER_DIRECTIONSlider direction.
NODE_SLIDER_REVERSEWhether to reverse the slider.
NODE_SLIDER_STYLESlider style.
NODE_SLIDER_BLOCK_COLORSlider color.
NODE_SLIDER_TRACK_COLORTrack color.
NODE_SLIDER_SELECTED_COLORColor of the selected part.
NODE_SLIDER_SHOW_STEPSWhether to display the step scale.

Toggle Component

The Toggle component is used to create a toggle to switch between the on and off states.

Creating the Toggle Component

The createNode API creates the Toggle component. The node type is ARKUI_NODE_TOGGLE.

std::shared_ptr<NativeModule::ArkUIBaseNode> CreateToggleExample()
{
    auto column = std::make_shared<NativeModule::ArkUIColumnNode>();
    column->SetWidth(1, true);
    column->SetHeight(1, true);
    column->SetBackgroundColor(0x33ff0000);
    column->SetPadding(PARAM_20, false);
    auto toggle = std::make_shared<NativeModule::ArkUIToggleNode>();
    toggle->SetSelectedColor(0xFFFF0000);
    toggle->SetUnSelectedColor(0xFF0000FF);
    toggle->SetSwitchPointColor(0xFF00FF00);
    column->AddChild(toggle);

    return column;
}

Setting the Toggle Style

You can set the background colors for a toggle in the on and off states, and the slider color.

toggle->SetSelectedColor(0xFFFF0000);
toggle->SetUnSelectedColor(0xFF0000FF);
toggle->SetSwitchPointColor(0xFF00FF00);

Toggle Attributes

The following table describes the attributes specific to the Toggle component. For details, see the enumerated values in ArkUI_NodeAttributeType.

AttributeDescription
NODE_TOGGLE_VALUEToggle status.
NODE_TOGGLE_SELECTED_COLORBackground color for the toggle in on state.
NODE_TOGGLE_UNSELECTED_COLORBackground color for the toggle in off state.
NODE_TOGGLE_SWITCH_POINT_COLORSlider color.

Checkbox Component

The Checkbox component is used to create a check box, which can be selected or deselected. The CheckboxGroup component is used to manage multiple check boxes and implement operations such as selecting all check boxes.

Creating the Checkbox Component

The createNode API creates the Checkbox component. The node type is ARKUI_NODE_CHECKBOX.

std::shared_ptr<NativeModule::ArkUIBaseNode> CreateCheckboxExample()
{
    auto column = std::make_shared<NativeModule::ArkUIColumnNode>();
    column->SetWidth(1, true);
    column->SetHeight(1, true);
    column->SetBackgroundColor(0x33ff0000);
    column->SetPadding(PARAM_20, false);
    auto checkbox1 = std::make_shared<NativeModule::ArkUICheckboxNode>();
    auto checkbox2 = std::make_shared<NativeModule::ArkUICheckboxNode>();
    auto checkbox3 = std::make_shared<NativeModule::ArkUICheckboxNode>();
    auto checkboxGroup = std::make_shared<NativeModule::ArkUICheckboxGroupNode>();
    checkboxGroup->SetCheckboxGroupName("check_group");
    checkbox1->SetCheckboxGroup("check_group");
    checkbox1->SetSelectColor(0xFFFF0000);
    checkbox2->SetCheckboxGroup("check_group");
    checkbox2->SetUnSelectColor(0xFFFF0000);
    checkbox3->SetCheckboxGroup("check_group");
    checkbox3->SetCheckboxShape(ArkUI_CHECKBOX_SHAPE_ROUNDED_SQUARE);
    checkbox1->SetCheckboxName("check_group1");
    checkbox2->SetCheckboxName("check_group2");
    checkbox3->SetCheckboxName("check_group3");

    column->AddChild(checkboxGroup);
    column->AddChild(checkbox1);
    column->AddChild(checkbox2);
    column->AddChild(checkbox3);

    // Add the column to the content.
    return column;
}

Creating the CheckboxGroup Component

The CheckboxGroup component is used to manage multiple check boxes in the same group. The node type is ARKUI_NODE_CHECKBOX_GROUP.

auto checkboxGroup = std::make_shared<NativeModule::ArkUICheckboxGroupNode>();
checkboxGroup->SetCheckboxGroupName("check_group");

Setting Checkbox Attributes

You can set the colors of the check box in the selected and unselected states, as well as its shape and group name.

checkbox1->SetCheckboxGroup("check_group");
checkbox1->SetSelectColor(0xFFFF0000);
checkbox2->SetCheckboxGroup("check_group");
checkbox2->SetUnSelectColor(0xFFFF0000);
checkbox3->SetCheckboxGroup("check_group");
checkbox3->SetCheckboxShape(ArkUI_CHECKBOX_SHAPE_ROUNDED_SQUARE);
checkbox1->SetCheckboxName("check_group1");
checkbox2->SetCheckboxName("check_group2");
checkbox3->SetCheckboxName("check_group3");

Checkbox Attributes

The following table describes the attributes specific to the Checkbox component. For details, see the enumerated values in ArkUI_NodeAttributeType.

AttributeDescription
NODE_CHECKBOX_SELECTWhether to select the check box.
NODE_CHECKBOX_SELECT_COLORColor in the selected state.
NODE_CHECKBOX_UNSELECT_COLORColor in the unselected state.
NODE_CHECKBOX_MARKStyle of the check mark.
NODE_CHECKBOX_SHAPEShape of the check box.
NODE_CHECKBOX_NAMEName of the check box. This attribute is supported since API version 15.
NODE_CHECKBOX_GROUPName of the check box group for CheckboxGroup management. This attribute is supported since API version 15.

CheckboxGroup Attributes

The following table describes the attributes specific to the CheckboxGroup component. For details, see the enumerated values in ArkUI_NodeAttributeType.

AttributeDescription
NODE_CHECKBOX_GROUP_NAMEName of the check box group. This attribute is supported since API version 15.
NODE_CHECKBOX_GROUP_SELECT_ALLWhether to select all. This attribute is supported since API version 15.
NODE_CHECKBOX_GROUP_SELECTED_COLORColor in the selected state. This attribute is supported since API version 15.
NODE_CHECKBOX_GROUP_UNSELECTED_COLORColor in the unselected state. This attribute is supported since API version 15.
NODE_CHECKBOX_GROUP_MARKStyle of the check mark. This attribute is supported since API version 15.
NODE_CHECKBOX_GROUP_SHAPEShape of the check box. This attribute is supported since API version 15.

Radio Component

The Radio component is used to create a radio button. Only one radio button can be selected from a group.

Creating the Radio Component

The createNode API creates the Radio component. The node type is ARKUI_NODE_RADIO.

std::shared_ptr<NativeModule::ArkUIBaseNode> CreateRadioExample()
{
    auto column = std::make_shared<NativeModule::ArkUIColumnNode>();
    column->SetWidth(1, true);
    column->SetHeight(1, true);
    column->SetBackgroundColor(0x33ff0000);
    column->SetPadding(PARAM_20, false);
    auto radio1 = std::make_shared<NativeModule::ArkUIRadioNode>();
    auto radio2 = std::make_shared<NativeModule::ArkUIRadioNode>();
    auto radio3 = std::make_shared<NativeModule::ArkUIRadioNode>();
    radio1->SetIsOn(true);
    radio1->SetRadioGroup("radio_group");
    radio2->SetRadioGroup("radio_group");
    radio3->SetRadioGroup("radio_group");
    radio3->SetRadioStyle(0xFFFF0000, 0xFF00FF00, 0xFF00FFFF);

    column->AddChild(radio1);
    column->AddChild(radio2);
    column->AddChild(radio3);

    return column;
}

Setting a Radio Group

Only one radio button can be selected from a group. You can implement mutual exclusion by setting the same group name.

radio1->SetIsOn(true);
radio1->SetRadioGroup("radio_group");
radio2->SetRadioGroup("radio_group");
radio3->SetRadioGroup("radio_group");

Setting the Radio Style

You can set the style of a radio button, including the color of the button in the unselected state and the colors of the inner ring and outer ring in the selected state.

radio3->SetRadioStyle(0xFFFF0000, 0xFF00FF00, 0xFF00FFFF);

Radio Attributes

The following table describes the attributes specific to the Radio component. For details, see the enumerated values in ArkUI_NodeAttributeType.

AttributeDescription
NODE_RADIO_CHECKEDWhether to select the radio button.
NODE_RADIO_STYLEStyle of the radio button in the selected and unselected states (including the background color in the selected state, stroke color in the unselected state, and color of the indicator in the selected state).
NODE_RADIO_VALUEValue of a radio button.
NODE_RADIO_GROUPName of a radio button group. Radio buttons in the same group are mutually exclusive.

Complete Examples

  • NativeFormExample: contains complete examples of the Button, Slider, Toggle, Checkbox, and Radio components.

你可能感兴趣的鸿蒙文章

openharmony 鸿蒙 arkts-common-components-text-input

openharmony 鸿蒙 arkts-select-component-faq

openharmony 鸿蒙 arkui-overview

openharmony 鸿蒙 js-framework-syntax-css

openharmony 鸿蒙 arkts-popup-and-menu-components-popup

openharmony 鸿蒙 arkts-navigation-animation-faq

openharmony 鸿蒙 arkts-rotation-transition-animation

openharmony 鸿蒙 ndk-inspector-component-observer

openharmony 鸿蒙 arkts-popup-and-menu-components-uicontext-popup

openharmony 鸿蒙 arkts-styled-string

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/3w6WDoHj