# EvenlySpacedLayout

> बच्चों को एक अक्ष पर समान अंतराल के साथ वितरित करता है, प्रत्येक का आकार संरक्षित रखते हुए।

Source: https://crossfly.dev/hi/docs/ui/layouts/evenly-spaced-layout — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# EvenlySpacedLayout

बच्चों को एक अक्ष (डिफ़ॉल्ट रूप से क्षैतिज) पर **समान अंतराल** के साथ वितरित करता है, **प्रत्येक का
आकार संरक्षित रखते हुए**। स्वयं-आकार वाले आइकनों/बटनों के टूलबार के लिए आदर्श।

> 🟡 · **पैकेज:** `dev.crossfly.ui.layout` · **विस्तार करता है:** `Layout`

## कब उपयोग करें
- क्रिया बार / आइकन टूलबार जिन्हें समान रूप से अंतराल पर रखा जाना चाहिए।

## कब उपयोग न करें
- जब आइटमों को भरने के लिए **खिंचना** चाहिए → [HorizontalLayout](/docs/ui/layouts/horizontal-layout) में
  भिन्नों का उपयोग करें।

## `add(...)` और कंस्ट्रक्टर
```java
public EvenlySpacedLayout add(Component c);      // (या add(Component...))
new EvenlySpacedLayout();                          // HORIZONTAL (default)
new EvenlySpacedLayout(Orientation.VERTICAL);      // ऊर्ध्वाधर अक्ष
```

## ⚠️ मुख्य बिंदु: यह आइटमों का आकार निर्धारित नहीं करता
यह लेआउट केवल **रिक्त स्थानों को वितरित** करता है — प्रत्येक आइटम का **आकार** वर्तमान bounds से या
auto-size से आता है। उत्तरदायी आइटमों के लिए, उन्हें `Relative` के साथ **स्टाइल** द्वारा एक आकार दें
(`autoWidth`/`autoHeight`)।

## पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
```java
package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.graphics.*;

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();

      String[] icones = { "home", "search", "settings", "person" };

      Component toolbar = new Component();
      toolbar.setLayout(new EvenlySpacedLayout());                 // क्षैतिज
      Relative lado = Relative.ofScreen(0.12f, ScreenSize.MIN);    // छोटी भुजा का 12% → रेस्पॉन्सिव वर्ग
      for (String glyph : icones) {
         Button b = new Button(new MaterialIcon(glyph));
         b.getStyle().autoWidth(lado).autoHeight(lado);            // स्टाइल द्वारा रेस्पॉन्सिव आकार
         toolbar.add(b);
      }

      setLayout(new VerticalLayout(Position.START, Position.START));
      add(LAY_FILL, new Component());   // सामग्री (placeholder)
      add(LAY_AUTO, toolbar);           // फुटर में क्रिया बार
   }
}
```

> नीचे दिए गए अंश **केवल मूल भाग** दिखाते हैं (जो `onShow()` के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर दिए गए `MainWindow` ढाँचे में रखें।

## बुनियादी उपयोग
```java
Component toolbar = new Component();
toolbar.setLayout(new EvenlySpacedLayout());                 // क्षैतिज
Relative lado = Relative.ofScreen(0.12f, ScreenSize.MIN);    // छोटी भुजा का 12% → रेस्पॉन्सिव वर्ग
for (String glyph : icones) {
   Button b = new Button(new MaterialIcon(glyph));
   b.getStyle().autoWidth(lado).autoHeight(lado);            // स्टाइल द्वारा रेस्पॉन्सिव आकार
   toolbar.add(b);
}
```

## यह कैसे व्यवस्थित करता है
```
│   [i1]     [i2]     [i3]   │   ← espaços iguais entre e nas bordas; itens mantêm seu tamanho
```

## अच्छी प्रथाएँ
- आइटमों का आकार `Relative` द्वारा दें (portrait/landscape के अनुकूल वर्गों के लिए
  `ofScreen(..., ScreenSize.MIN)`)।

## सामान्य त्रुटियाँ
- यह अपेक्षा करना कि आइटम स्वचालित रूप से एक ही आकार के हो जाएँगे — वे नहीं होते; आकार परिभाषित करें।
- आइटमों के आकार के लिए निश्चित पिक्सेल का उपयोग करना।

## यह भी देखें
- [HorizontalLayout](/docs/ui/layouts/horizontal-layout) · [उत्तरदायित्व](/docs/ui/layouts/responsiveness)
