---
title: "在 Android SDK 中展示旧版付费墙编辑工具付费墙"
description: "在 Android（旧版）中展示付费墙并有效管理订阅。"
---

如果您已使用付费墙编辑工具自定义了付费墙，则无需在移动应用代码中处理其渲染逻辑即可将其展示给用户。此类付费墙同时包含应展示的内容以及展示方式。

:::warning

本指南仅适用于**旧版付费墙编辑工具付费墙**，需要 SDK v2.x 或更早版本。不同版本付费墙编辑工具设计的付费墙、远程配置付费墙以及 [Observer 模式](observer-vs-full-mode)的付费墙展示流程各有不同。

- 如需展示**新版付费墙编辑工具付费墙**，请参阅 [Android - 展示新版付费墙编辑工具付费墙](android-present-paywalls)。
- 如需展示**远程配置付费墙**，请参阅 [渲染由远程配置设计的付费墙](present-remote-config-paywalls)。
- 如需在 **Observer 模式**下展示付费墙，请参阅 [Android - 在 Observer 模式中展示付费墙编辑工具付费墙](android-present-paywall-builder-paywalls-in-observer-mode)。

:::

若要在设备屏幕上显示可视化付费墙，必须先对其进行配置。为此，请调用 `AdaptyUI.getPaywallView()` 方法，或直接创建 `AdaptyPaywallView`：

<Tabs groupId="current-os" queryString>
  <TabItem value="kotlin" label="Kotlin" default>
```kotlin showLineNumbers
   val paywallView = AdaptyUI.getPaywallView(
       activity,
       viewConfiguration,
       products,
       AdaptyPaywallInsets.of(topInset, bottomInset),
       eventListener,
       personalizedOfferResolver,
       tagResolver,
   )

   //======= OR =======

   val paywallView =
        AdaptyPaywallView(activity) // or retrieve it from xml
   ...
   with(paywallView) {
       setEventListener(eventListener)
       setObserverModeHandler(observerModeHandler)
       showPaywall(
           viewConfiguration,
           products,
           AdaptyPaywallInsets.of(topInset, bottomInset),
           personalizedOfferResolver,
           tagResolver,
       )
   }
```
</TabItem>
<TabItem value="java" label="Java" default>

```java showLineNumbers
AdaptyPaywallView paywallView = AdaptyUI.getPaywallView(
        activity,
        viewConfiguration,
        products,
        AdaptyPaywallInsets.of(topInset, bottomInset),
        eventListener,
        personalizedOfferResolver,
        tagResolver
);

//======= OR =======

AdaptyPaywallView paywallView =
  new AdaptyPaywallView(activity); //add to the view hierarchy if needed, or you receive it from xml
...
paywallView.setEventListener(eventListener);
paywallView.showPaywall(viewConfiguration, products, AdaptyPaywallInsets.of(topInset, bottomInset), personalizedOfferResolver);
```
</TabItem>
<TabItem value="XML" label="XML" default>
```xml showLineNumbers
<com.adapty.ui.AdaptyPaywallView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
```
</TabItem>
</Tabs>

视图成功创建后，您可以将其添加到视图层级中并在设备屏幕上显示。

如果您获取 `AdaptyPaywallView` 的方式**不是**通过调用 `AdaptyUI.getPaywallView()`，则还需要调用 `.setEventListener()` 和 `.showPaywall()` 方法。

请求参数：

| 参数                            | 是否必填 | 描述                                                                                                                                                                                                                                                                                               |
| :---------------------------- | :------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Paywall**                   | 必填     | 指定一个 `AdaptyPaywall` 对象，即您尝试获取屏幕展示的付费墙。                                                                                                                                                                                                                                      |
| **Products**                  | 可选     | 提供一个 `AdaptyPaywallProduct` 数组，以优化产品在屏幕上的显示时机。如果传入 `null`，AdaptyUI 将自动获取所需产品。                                                                                                                                                                                   |
| **ViewConfiguration**         | 必填     | 提供一个包含付费墙视觉详情的 `AdaptyViewConfiguration` 对象。使用 `Adapty.getViewConfiguration(paywall)` 方法加载该对象。详情请参阅 [获取付费墙的视觉配置](android-get-pb-paywalls#fetch-the-view-configuration-of-paywall-designed-using-paywall-builder)。                                        |
| **Insets**                    | 必填     | 定义一个 `AdaptyPaywallInsets` 对象，其中包含系统栏遮挡区域的信息，用于为内容创建垂直边距。如果状态栏和导航栏均未遮挡 `AdaptyPaywallView`，请传入 `AdaptyPaywallInsets.NONE`。对于系统栏遮挡部分 UI 的全屏模式，请按下表所示方式获取 insets。 |
| **EventListener**             | 可选     | 提供一个 `AdaptyUiEventListener` 以监听付费墙事件。推荐继承 `AdaptyUiDefaultEventListener` 以简化使用。详情请参阅 [处理付费墙事件](android-handling-events)。                                                                                                                                        |
| **PersonalizedOfferResolver** | 可选     | 如需标识个性化定价（[了解更多](https://developer.android.com/google/play/billing/integrate#personalized-price)），请实现 `AdaptyUiPersonalizedOfferResolver` 并传入您自己的逻辑：若产品价格为个性化定价则映射为 true，否则为 false。                                                                  |
| **TagResolver**               | 可选     | 使用 `AdaptyUiTagResolver` 解析付费墙文本中的自定义标签。该解析器接收标签参数并将其解析为对应字符串。详情请参阅 [付费墙编辑工具中的自定义标签](custom-tags-in-paywall-builder)。                                                                                                                      |

对于系统栏遮挡部分 UI 的全屏模式，请按以下方式获取 insets：

<Tabs groupId="current-os" queryString>
  <TabItem value="kotlin" label="Kotlin" default>
```kotlin showLineNumbers

//create extension function
fun View.onReceiveSystemBarsInsets(action: (insets: Insets) -> Unit) {
    ViewCompat.setOnApplyWindowInsetsListener(this) { _, insets ->
        val systemBarInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
        ViewCompat.setOnApplyWindowInsetsListener(this, null)
        action(systemBarInsets)
        insets
    }
}
//and then use it with the view
paywallView.onReceiveSystemBarsInsets { insets ->
    val paywallInsets = AdaptyPaywallInsets.of(insets.top, insets.bottom)
    paywallView.showPaywall(paywall, products, viewConfig, paywallInsets, productTitleResolver)
}
```
</TabItem>
<TabItem value="java" label="Java" default>
```java showLineNumbers

...

ViewCompat.setOnApplyWindowInsetsListener(paywallView, (view, insets) -> {
    Insets systemBarInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars());
    ViewCompat.setOnApplyWindowInsetsListener(paywallView, null);
  
    AdaptyPaywallInsets paywallInsets =
                AdaptyPaywallInsets.of(systemBarInsets.top, systemBarInsets.bottom);
    paywallView.showPaywall(paywall, products, viewConfiguration, paywallInsets, productTitleResolver);
            
    return insets;
});
```
</TabItem>
</Tabs>

返回值：

| 对象                  | 描述                        |
| :------------------ | :------------------------- |
| `AdaptyPaywallView` | 表示所请求付费墙屏幕的对象。 |

**下一步：**

- [处理付费墙事件](android-handling-events-legacy)