我在应用程序中包含了 paypal sdk,并设置了产品名称和价格,如附图所示。
是否可以更改 paypal PaymentActivity 类的标题。?
我从这个链接使用了贝宝的整个代码。请 建议我们是否可以将标题更改为任何文本,(我想更改用红圈标记的文本)?
Jeff 来自 PayPal 移动 SDK 团队。
PayPal Android SDK 不支持修改任何 SDK 活动。我们不打算允许修改标题的功能,因为这会导致用户体验不一致。但是,我们对用户的反馈持开放态度,因此如果您有功能请求,请随时在GitHub中提出问题!
您的AndroidManifest.xml
文件应该有一个如下PaymentActivity
所示的条目:
<activity android:name="com.paypal.android.sdk.payments.PaymentActivity" />
您所要做的就是将label
属性添加到该属性以更改标题:
<activity android:name="com.paypal.android.sdk.payments.PaymentActivity" android:label="@string/some_title" />
有关其他可能有用的属性,请参阅activity
标签文档。
注意:我在这里假设 PayPal SDK 将允许您覆盖标题。也就是说,如果没有明确给出,我希望它只设置默认标题。
编辑:不幸的是,上面的假设已被证明是不正确的。再深入一点,发现 PayPal SDK 中的每个活动总是在onCreate()
方法中设置其标题。这实际上有点令人惊讶,因为这意味着 PayPal 没有利用 Android 对本地化和资源的内置支持。虽然我认为它确实允许他们以 jar 的形式向开发人员提供 SDK,但它不支持捆绑 Android 资源。
无论如何,由于尚未声明各种活动final
,您可以简单地尝试扩展它们并在超级完成工作后设置标题:
public class TitlePaymentMethodActivity extends PaymentMethodActivity {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Custom Title")
// or:
setTitle(R.string.custom_title);
}
}
之后,您必须将清单更改为指向您的TitlePaymentMethodActivity
,而不是直接指向 SDK 中的活动。请注意,如果 PayPal 决定最终确定活动类别,这种方法可能随时中断。考虑到这一点,我建议您遵循@shoe rat 的建议,向 PayPal 提出“官方”支持请求。
显然,有几个观察结果:
PaymentMethodActivity
(根据 Hierarchy Viewer)根据 PayPal SDK 页面中提供的示例应用程序,使用以下onBuyPressed()
命令启动 PaymentActivity startActivityForResult()
:
现在,根据SDK 参考资料,PaymentActivity 不提供任何用于设置自定义标题的 API。该页面列出setTitle()
了“从类 android.app.Activity 继承的方法”的一部分,但没有提供有关如何扩展 PaymentActivity 以便可以利用这些 API 的任何详细信息。
所以,目前,没有办法使用自定义标题。
我个人不会费心更改该屏幕上的标题,因为它清楚地将自己描述为 PayPal 屏幕(因为人们会在浏览器上看到他们的主页),但如果您真的想要自定义标题,您可能需要提交一个新问题在他们的 GitHub 页面上。