下面是我的应用程序标题,我想在“DD / MM”位置设置当前日期时间。我该如何以编程方式执行此操作?我正在使用actionBarSherlock
这是我设置背景的方式:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
</style>
<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar">
<item name="android:background">@drawable/abs_bg</item>
<item name="background">#ffffff</item>
</style>
答案 0 :(得分:2)
我可能会误解,但你可以添加一个什么都不做的MenuItem
,设置为那个文本(虽然这可能是一个糟糕的方法)。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
String currentTime;
// Calculate your string
MenuItem item = menu.add(Menu.NONE, 0, Menu.NONE, currentTime);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
return true;
}
return super.onOptionsItemSelected(item);
}
我认为这是一种方法,虽然我不确定它看起来有多好。
编辑:您也可以通过设置自定义背景,在按下MenuItem时删除ActionBar突出显示的蓝色部分。下面是一个快速的方法(假设你只有那个MenuItem):
<style name="BlankMenu" parent="@style/AppTheme">
<item name="actionButtonStyle">@style/CustomItem</item>
</style>
<style name="CustomItem" parent="@style/Widget.Sherlock.ActionButton">
<item name="background">@drawable/transparent</item>
</style>
@drawable/transparent
为1x1透明PNG时。只需在主文件中将主题设置为BlankMenu
。
如果您的目标是仅将日期包围在蓝色背景中,您还可以修改主题以使MenuItem默认为蓝色背景,并从ActionBar主题中删除蓝色部分。它可能会让它更可靠。
答案 1 :(得分:2)
为XML中的标题创建自定义布局,为此更新/ findViewById并更新日期,然后在ActionBar对象上调用setCustomView(View)。
ActionBar actionBar = getSupportActionBar();
LinearLayout actionBarView = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.action_bar_view, null);
((TextView) actionBarView.findViewById(R.id.textViewDate)).setText(CURRENT_DATE);
actionBar.setCustomView(actionBarView);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM);
编辑:另外,如果你想从资源ID设置自定义视图,你可以调用setCustomView(int resID),然后使用getCustomView对视图进行实际更改,如果你有需要的数据会更有用多次更改或在创建actionBar之后。
答案 2 :(得分:0)
如果您不需要使用任何选项菜单或任何其他actionBarSherlock功能,则不需要此库。您可以将任何主题与 NoTitleBar
一起使用,并创建自定义RelativeLayout
来创建标题。
<强> styles.xml 强>:
<style name="AppTheme" parent="android:Theme.Light.NoTitleBar">
<!--Anything -->
</style>
您的layout.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<RelativeLayout android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="50dip"
android:background="#6ccff6">
<ImageView
android:id="@+id/logo"
android:adjustViewBounds="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/abs_bg" />
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:textColor="@android:color/white"
android:text="July 25"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
<!-- Put any other layout/view here -->
</LinearLayout>