In my app’s in app purchase screen I show the details and price button and restore purchase button. But only in pixel devices the price button which is also buy button does not show at all. On phone restart it appears for some and appears and disappears again on some devices. What can be the issue? Please note this happens only in pixel devices not emulators. The button name is inAppPurchaseButtonWithPrice
@Override
public void setup(final Activity vActivity) {
super.setup(vActivity);
activity.setContentView(contentView);
setTitle(UIUtils.getDisplayText(activity, R.string.get_full_version));
setUpHomeButton();
}
@Override
public void setContentView() {
contentView = new RelativeLayout(activity);
LinearLayout rootLayout = new LinearLayout(activity);
rootLayout.setId(Constants.ROOT_LAYOUT_ID_4);
rootLayout.setOrientation(LinearLayout.VERTICAL);
rootLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
//rootLayout.setBackground(AppGraphicUtils.getAppBackground(activity));
rootLayout.addView(navigationBar);
ScrollView scrollView = new ScrollView(activity);
LinearLayout.LayoutParams scrollViewParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1f);
LinearLayout parentMostLayout = new LinearLayout(activity);
parentMostLayout.setOrientation(LinearLayout.VERTICAL);
parentMostLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
TextView liteVersionDescription = new TextView(activity);
LinearLayout.LayoutParams liteVersionDescriptionParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
liteVersionDescriptionParams.setMargins(0, 10, 0, 0);
liteVersionDescription.setGravity(Gravity.CENTER_HORIZONTAL);
liteVersionDescription.setTextColor(Color.BLACK);
liteVersionDescription.setLineSpacing(5, 1f);
liteVersionDescription.setPadding(5, 5, 5, 5);
liteVersionDescription.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
liteVersionDescription.setTextColor(ApplicationDetails.getAboutViewTextColor());
liteVersionDescription.setTypeface(UIUtils.getFont(activity.getAssets(), Constants.APP_TITLE_FONT_BOLD));
String liteVersionDetailsString = (ApplicationDetails.getLiteVersionDetails() != null) ? ApplicationDetails.getLiteVersionDetails() : activity.getResources().getString(R.string.lite_version_details);
liteVersionDescription.setText(" " + liteVersionDetailsString);
parentMostLayout.addView(liteVersionDescription, liteVersionDescriptionParams);
FrameLayout frameLayout = new FrameLayout(activity);
FrameLayout.LayoutParams frameLayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
frameLayoutParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
Typeface inAppPurchaseButtonFont = UIUtils.getFont(activity.getAssets(), Constants.QUIZ_BUTTON_FONT);
Button inAppPurchaseButtonWithoutPrice = createButton(parentMostLayout, activity.getResources().getString(R.string.in_app_purchase_button));
inAppPurchaseButtonWithoutPrice.setTextColor(ApplicationDetails.getBeginTestButtonTextColor());
inAppPurchaseButtonWithoutPrice.setTypeface(inAppPurchaseButtonFont);
Button inAppPurchaseButtonWithPrice = new Button(activity);
inAppPurchaseButtonWithPrice.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
inAppPurchaseButtonWithPrice.setVisibility(View.GONE); // Initially hidden
LinearLayout.LayoutParams inAppPurchaseButtonTwoParams = new LinearLayout.LayoutParams(
UIUtils.convertDPToPixels(activity.getResources().getDisplayMetrics(), 300),
UIUtils.convertDPToPixels(activity.getResources().getDisplayMetrics(), 60)
);
inAppPurchaseButtonWithPrice.setText("hello");//activity.getResources().getString(R.string.in_app_purchase_button));
inAppPurchaseButtonWithPrice.setTextColor(ApplicationDetails.getBeginTestButtonTextColor());
int valueInInt = (int) (activity.getResources().getDimension(R.dimen.in_app_purchase_button_text_font_size) / activity.getResources()
.getDisplayMetrics().density);
inAppPurchaseButtonWithPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP, (float) valueInInt);
inAppPurchaseButtonWithPrice.setTypeface(Typeface.DEFAULT_BOLD);
inAppPurchaseButtonWithPrice.setFocusable(true);
inAppPurchaseButtonWithPrice.setClickable(true);
inAppPurchaseButtonWithPrice.setOnClickListener(ActivityTrafficController.onInAppPurchaseButtonClicked(activity));
inAppPurchaseButtonWithPrice.setBackground(AppGraphicUtils.getStartButtonBackground(activity));
inAppPurchaseButtonTwoParams.setMargins(0, 7, 0, 7);
inAppPurchaseButtonTwoParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
parentMostLayout.addView(inAppPurchaseButtonWithPrice, inAppPurchaseButtonTwoParams);
parentMostLayout.addView(frameLayout, frameLayoutParams);
// Create the new TextView for Pixel users and add only if pixel
// Device-specific adjustments for Pixel devices: these devices does not show the price button thus users are unable to buy. restarting the phone displays it.
if (Build.MODEL.contains("Pixel")) {
TextView restartNote = new TextView(activity);
LinearLayout.LayoutParams restartNoteParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
restartNoteParams.setMargins(0, 20, 0, 0);
restartNote.setGravity(Gravity.CENTER_HORIZONTAL);
restartNote.setTextColor(Color.RED);
restartNote.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
restartNote.setText("Note for Pixel users: If you do not see the price/purchase button, please restart your device to see it.");
parentMostLayout.addView(restartNote, restartNoteParams);
}
TextView alreadyPurchasedDescription = createTextView(parentMostLayout,
activity.getResources().getString(R.string.already_purchased_description), Color.parseColor("#000000"));
alreadyPurchasedDescription.setTextColor(ApplicationDetails.getAboutViewTextColor());
Button restorePurchaseButton = createButton(parentMostLayout, activity.getResources().getString(R.string.already_purchased_button));
restorePurchaseButton.setTextColor(ApplicationDetails.getBeginTestButtonTextColor());
restorePurchaseButton.setTypeface(inAppPurchaseButtonFont);
restorePurchaseButton.setOnClickListener(ActivityTrafficController.onRestorePurchaseButtonClick(activity));
scrollView.addView(parentMostLayout);
rootLayout.addView(scrollView, scrollViewParams);
rootLayout.addView(footerBar);
contentView.addView(rootLayout);
((BaseInAppPurchaseActivity) activity).setInAppPurchaseButtonWithoutPrice(inAppPurchaseButtonWithoutPrice);
((BaseInAppPurchaseActivity) activity).setInAppPurchaseButtonWithPrice(inAppPurchaseButtonWithPrice);
}
public TextView createTextView(LinearLayout parentMostLayout, String text, int textColor) {
TextView textView = new TextView(activity);
LinearLayout.LayoutParams inAppDescriptionParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
inAppDescriptionParams.setMargins(0, 7, 0, 0);
textView.setGravity(Gravity.CENTER_HORIZONTAL);
textView.setTextColor(textColor);
textView.setText(text);
textView.setLineSpacing(5, 1f);
textView.setPadding(5, 5, 5, 5);
int valueInInt = (int) (activity.getResources().getDimension(R.dimen.in_app_purchase_button_text_font_size) / activity.getResources()
.getDisplayMetrics().density);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, (float) valueInInt);
parentMostLayout.addView(textView, inAppDescriptionParams);
return textView;
}
public Button createButton(View view, String text) {
Button button = new Button(activity);
button.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(UIUtils.convertDPToPixels(activity.getResources().getDisplayMetrics(),
300), UIUtils.convertDPToPixels(activity.getResources().getDisplayMetrics(), 60));
button.setText(text);
button.setTextColor(ApplicationDetails.getBeginTestButtonTextColor());
int valueInInt = (int) (activity.getResources().getDimension(R.dimen.in_app_purchase_button_text_font_size) / activity.getResources()
.getDisplayMetrics().density);
button.setTextSize(TypedValue.COMPLEX_UNIT_SP, (float) valueInInt);
button.setTypeface(Typeface.DEFAULT_BOLD);
button.setFocusable(true);
button.setClickable(true);
button.setBackground(AppGraphicUtils.getStartButtonBackground(activity));
buttonParams.setMargins(0, 7, 0, 7);
buttonParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
((ViewGroup) view).addView(button, buttonParams);
return button;
}