@capawesome/capacitor-android-edge-to-edge-support
Version:
Capacitor plugin to support edge-to-edge display on Android.
217 lines (141 loc) • 7.49 kB
Markdown
# @capawesome/capacitor-android-edge-to-edge-support
Capacitor plugin to support [edge-to-edge](https://developer.android.com/develop/ui/views/layout/edge-to-edge) display on Android with advanced features like setting the background color of the status bar and navigation bar.
| Before | After | Before | After |
| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| <image src="https://github.com/user-attachments/assets/1c42aa63-1191-4b9b-860f-ffc47881d815" width="200" /> | <image src="https://github.com/user-attachments/assets/a4df4e58-0c21-45b5-aadd-ca197308016a" width="200" /> | <image src="https://github.com/user-attachments/assets/22c94f95-a0c4-4ace-8a3b-3a0feabf9191" width="200" /> | <image src="https://github.com/user-attachments/assets/21ece022-fb74-4067-889b-6922ecd0e2a5" width="200" /> |
<div class="capawesome-z29o10a">
<a href="https://cloud.capawesome.io/" target="_blank">
<img alt="Deliver Live Updates to your Capacitor app with Capawesome Cloud" src="https://cloud.capawesome.io/assets/banners/cloud-deploy-real-time-app-updates.png?t=1" />
</a>
</div>
## Installation
```bash
npm install @capawesome/capacitor-android-edge-to-edge-support
npx cap sync
```
### Android
If you are using the [Capacitor Keyboard](https://capacitorjs.com/docs/apis/keyboard) plugin, make sure to set the `resizeOnFullScreen` property to `false` (default) in your Capacitor Configuration file:
```json
{
"plugins": {
"Keyboard": {
"resizeOnFullScreen": false
}
}
}
```
Otherwise, the web view will be resized to fit the screen, which may cause issues with this plugin, see [this comment](https://github.com/capawesome-team/capacitor-plugins/issues/490#issuecomment-2826435796).
## Configuration
<docgen-config>
<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->
| Prop | Type | Description | Since |
| --------------------- | ------------------- | ------------------------------------------------------------------------------------------ | ----- |
| **`backgroundColor`** | <code>string</code> | The hexadecimal color to set as the background color of the status bar and navigation bar. | 7.1.0 |
### Examples
In `capacitor.config.json`:
```json
{
"plugins": {
"EdgeToEdge": {
"backgroundColor": "#ffffff"
}
}
}
```
In `capacitor.config.ts`:
```ts
/// <reference types="@capawesome/capacitor-android-edge-to-edge-support" />
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
EdgeToEdge: {
backgroundColor: "#ffffff",
},
},
};
export default config;
```
</docgen-config>
## Usage
The plugin **only needs to be installed**. It applies insets to the web view to support edge-to-edge display on Android. The plugin also provides a method to set the background color of the status bar and navigation bar. It's recommended to use this method in combination with the [Status Bar](https://capacitorjs.com/docs/apis/status-bar) plugin.
```typescript
import { EdgeToEdge } from '@capawesome/capacitor-android-edge-to-edge-support';
import { StatusBar, Style } from '@capacitor/status-bar';
const enable = async () => {
await EdgeToEdge.enable();
};
const disable = async () => {
await EdgeToEdge.disable();
};
const getInsets = async () => {
const result = await EdgeToEdge.getInsets();
console.log('Insets:', result);
};
const setBackgroundColor = async () => {
await EdgeToEdge.setBackgroundColor({ color: '#ffffff' });
await StatusBar.setStyle({ style: Style.Light });
};
```
## API
<docgen-index>
* [`enable()`](#enable)
* [`disable()`](#disable)
* [`getInsets()`](#getinsets)
* [`setBackgroundColor(...)`](#setbackgroundcolor)
* [Interfaces](#interfaces)
</docgen-index>
<docgen-api>
<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->
### enable()
```typescript
enable() => Promise<void>
```
Enable the edge-to-edge mode.
Only available on Android.
**Since:** 7.2.0
--------------------
### disable()
```typescript
disable() => Promise<void>
```
Disable the edge-to-edge mode.
Only available on Android.
**Since:** 7.2.0
--------------------
### getInsets()
```typescript
getInsets() => Promise<GetInsetsResult>
```
Return the insets that are currently applied to the webview.
Only available on Android.
**Returns:** <code>Promise<<a href="#getinsetsresult">GetInsetsResult</a>></code>
**Since:** 7.2.0
--------------------
### setBackgroundColor(...)
```typescript
setBackgroundColor(options: SetBackgroundColorOptions) => Promise<void>
```
Set the background color of the status bar and navigation bar.
Only available on Android.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------- |
| **`options`** | <code><a href="#setbackgroundcoloroptions">SetBackgroundColorOptions</a></code> |
**Since:** 7.0.0
--------------------
### Interfaces
#### GetInsetsResult
| Prop | Type | Description | Since |
| ------------ | ------------------- | ---------------------------------------------------------------------------- | ----- |
| **`bottom`** | <code>number</code> | The bottom inset that was applied to the webview. Only available on Android. | 7.2.0 |
| **`left`** | <code>number</code> | The left inset that was applied to the webview. Only available on Android. | 7.2.0 |
| **`right`** | <code>number</code> | The right inset that was applied to the webview. Only available on Android. | 7.2.0 |
| **`top`** | <code>number</code> | The top inset that was applied to the webview. Only available on Android. | 7.2.0 |
#### SetBackgroundColorOptions
| Prop | Type | Description | Since |
| ----------- | ------------------- | ------------------------------------------------------------------------------------------ | ----- |
| **`color`** | <code>string</code> | The hexadecimal color to set as the background color of the status bar and navigation bar. | 7.0.0 |
</docgen-api>
## Changelog
See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/android-edge-to-edge-support/CHANGELOG.md).
## License
See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/android-edge-to-edge-support/LICENSE).