0

Below is my application header and I want to set current date-time in "DD/MM" place. How can I do this programmatically ? I am using actionBarSherlock

enter image description here

This is how I have set the background:

<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>
4

3 回答 3

2

为 XML 中的标题创建自定义布局,为此进行 inflate/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 之后。

于 2013-07-24T17:06:48.880 回答
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 主题中删除蓝色部分。它可能会使它更可靠。

于 2013-07-24T16:45:07.010 回答
0

如果您不需要使用任何选项菜单或任何其他 actionBarSherlock 功能,则不需要此库。您可以使用任何主题NoTitleBar并创建自定义RelativeLayoutt 创建标题。

样式.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>
于 2014-08-16T03:46:46.173 回答