我正在尝试在活动中设置actionBar的标题。我在一个活动中有3个布局视图。每个视图布局显示付款流程的不同状态。现在我设置了标题,在一个阶段,操作栏背景搞砸了。我想知道为什么。
如果我注释掉以下行,就不会发生这种情况。
onClick() {
....
getActionBar().setTitle("Customer Payment");
....
在活动的onCreate中,我运行以下命令来设置操作栏背景。
private void setupActionBar() {
Drawable backgroundColor;
switch (getIntent().getIntExtra(God.HOME_SCREEN_OPERATION,
God.INVALID_ID)) {
case God.OPERATION_RECHARGE:
getActionBar().setIcon(R.drawable.icon_mobile);
backgroundColor = new ColorDrawable(getResources().getColor(
R.color.RechargeBackgroundColor));
getActionBar().setBackgroundDrawable(backgroundColor);
mobileServiceSummary.setVisibility(View.VISIBLE);
serviceInfoLayout.setBackground(backgroundColor);
serviceInfoIcon.setImageResource(R.drawable.icon_mobile);
break;
case God.OPERATION_FACILITY:
getActionBar().setIcon(R.drawable.icon_facility);
backgroundColor = new ColorDrawable(getResources().getColor(
R.color.ToiletBackgroundColor));
getActionBar().setBackgroundDrawable(backgroundColor);
facilityServiceSummary.setVisibility(View.VISIBLE);
serviceInfoLayout.setBackground(backgroundColor);
serviceInfoIcon.setImageResource(R.drawable.icon_facility);
break;
case God.OPERATION_DTH:
getActionBar().setIcon(R.drawable.icon_dth);
backgroundColor = new ColorDrawable(getResources().getColor(
R.color.DthBackgroundColor));
getActionBar().setBackgroundDrawable(backgroundColor);
dthServiceSummary.setVisibility(View.VISIBLE);
serviceInfoLayout.setBackground(backgroundColor);
serviceInfoIcon.setImageResource(R.drawable.icon_dth);
break;
// case R.id.mseb_payment:
// getActionBar().setIcon(R.drawable.icon_mseb);
// msebServiceSummary.setVisibility(View.VISIBLE) ;
// break;
default:
break;
}
}
更多代码..
private void enableCustomerPayment() {
getActionBar().setTitle("Customer Payment");
getActionBar().setSubtitle(
"Pincode of customer needed for payment permission.");
getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setHomeButtonEnabled(false);
getActionBar().setDisplayShowCustomEnabled(false) ;
getActionBar().setDisplayUseLogoEnabled(false) ;
findViewById(R.id.next_button).setVisibility(View.GONE);
findViewById(R.id.payment_button).setVisibility(View.VISIBLE);
findViewById(R.id.done_button).setVisibility(View.GONE);
operatorLockLayout.setVisibility(View.GONE);
customerLoginAndConfirmationLayout.setVisibility(View.VISIBLE);
customerPaymentLayout.setVisibility(View.GONE);
customerConfirmLayout.setVisibility(View.VISIBLE);
// customerConfirmSpaceLayout.setVisibility(View.VISIBLE);
}
private void enablePaymentConfirmation() {
getActionBar().setTitle("Payment Confirmation");
getActionBar().setSubtitle("Thankyou for your payment.");
setupActionBar();
getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setHomeButtonEnabled(false);
findViewById(R.id.next_button).setVisibility(View.GONE);
findViewById(R.id.payment_button).setVisibility(View.GONE);
findViewById(R.id.done_button).setVisibility(View.VISIBLE);
operatorLockLayout.setVisibility(View.GONE);
customerLoginAndConfirmationLayout.setVisibility(View.VISIBLE);
customerPaymentLayout.setVisibility(View.VISIBLE);
customerConfirmLayout.setVisibility(View.GONE);
// customerConfirmSpaceLayout.setVisibility(View.GONE);
}
在styles.xml中,颜色是这样设置的。而且颜色也很好。
<color name="NewWalletBackgroundColor">#FFD54E</color>
<color name="BalanceBackgroundColor">#FFD54E</color>
<color name="DepositBackgroundColor">#FFD54E</color>
<color name="MsebBackgroundColor">#E57272</color>
<color name="RechargeBackgroundColor">#81C784</color>
<color name="DthBackgroundColor">#AB6BAC</color>
<color name="ToiletBackgroundColor">#56C0ED</color>
似乎高度存在问题,它以96开始,当它搞砸了高度为0时。
我现在如何解决这个问题?
答案 0 :(得分:0)
在我看来,默认操作栏期望操作栏右侧的导航抽屉图标的图标。我认为你所谈论的空间上有一个透明的按钮。即使您为此活动设置抽屉,如果您使用默认方法设置操作栏,它也会在那里。首先尝试这些步骤
setDrawerIndicatorEnabled(false).
actionBar.setDisplayHomeAsUpEnabled(false)
actionBar.setHomeButtonEnabled(false);
如果不起作用,请转到自定义操作栏。
做这样的事情。您没有尝试设置自定义视图(纯文本视图的宽度设置为与父级匹配),而不是使用默认操作栏。
this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);
LayoutInflater inflator = LayoutInflater.from(this);
View v = inflator.inflate(R.layout.titleview, null);
//if you need to customize anything else about the text, do it here.
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());
//assign the view to the actionbar
this.getActionBar().setCustomView(v);
答案 1 :(得分:0)
我从您的问题中假设enablePaymentConfirmation
正在使用getActionBar().setTitle("Customer Payment");
存在setupActionBar()
以及何时被注释掉。如果它也在播放,那么我需要改变我的答案。
没有看到你的xml让它更加猜测,但从我可以看到,我会建议如下
1。
在您的活动中致电您OnCreate
enableCustomerPayment()
。这样就可以在活动期间进行设置。如果您在enablePaymentConfirmation()
之前拨打 getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setHomeButtonEnabled(false);
,则不会在OnCreate中调用它,操作栏设置将不会被调用。
2。 除非您未显示以下代码更改,否则这些更改可以放在您的setupActionbar中:
getActionBar().setDisplayShowCustomEnabled(false) ;
getActionBar().setDisplayUseLogoEnabled(false) ;
3。 以下是您显示的两种方法对ActionBar的两处更改:
setDisplayShowCustomEnabled
4。
我不确定您为什么只在enableCustomerPayment()
中设置0.065000
1.000000
。我看不到您使用的是customView。
- 如果没有,也可以进入您的设置。
- 否则,您需要在所有方法中使用更改来调用它。
- 如果您在某些地方而不是其他地方使用操作栏的自定义视图,则会影响其显示方式。特别是如果你没有管理bool变化。
5。 徽标也一样,我不知道你在哪里使用它。所以我会把它放在设置中。如果你将它用于其他人并且你没有正确设置你的xml,那么可能就是为什么背景颜色有所不同。
希望这会有所帮助。随意发布更多信息,xml会很好。