diff --git a/clients/android/NewsBlur/res/layout/actionbar_custom_icon.xml b/clients/android/NewsBlur/res/layout/actionbar_custom_icon.xml
new file mode 100644
index 000000000..8aa64bb9e
--- /dev/null
+++ b/clients/android/NewsBlur/res/layout/actionbar_custom_icon.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/FeedItemsList.java b/clients/android/NewsBlur/src/com/newsblur/activity/FeedItemsList.java
index 532e7b38f..8c8b7645e 100644
--- a/clients/android/NewsBlur/src/com/newsblur/activity/FeedItemsList.java
+++ b/clients/android/NewsBlur/src/com/newsblur/activity/FeedItemsList.java
@@ -33,8 +33,7 @@ public class FeedItemsList extends ItemsList {
super.onCreate(bundle);
- setTitle(feed.title);
- UIUtils.setActionBarImage(this, feed.faviconUrl);
+ UIUtils.setCustomActionBar(this, feed.faviconUrl, feed.title);
itemListFragment = (FeedItemListFragment) fragmentManager.findFragmentByTag(FeedItemListFragment.class.getName());
if (itemListFragment == null) {
diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/FeedReading.java b/clients/android/NewsBlur/src/com/newsblur/activity/FeedReading.java
index 045ade7a6..d6226e713 100644
--- a/clients/android/NewsBlur/src/com/newsblur/activity/FeedReading.java
+++ b/clients/android/NewsBlur/src/com/newsblur/activity/FeedReading.java
@@ -20,8 +20,7 @@ public class FeedReading extends Reading {
Classifier classifier = FeedUtils.dbHelper.getClassifierForFeed(feed.feedId);
- setTitle(feed.title);
- UIUtils.setActionBarImage(this, feed.faviconUrl);
+ UIUtils.setCustomActionBar(this, feed.faviconUrl, feed.title);
readingAdapter = new FeedReadingAdapter(fragmentManager, feed, classifier, defaultFeedView);
diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/ItemsList.java b/clients/android/NewsBlur/src/com/newsblur/activity/ItemsList.java
index c1d2a43c1..3b9c63106 100644
--- a/clients/android/NewsBlur/src/com/newsblur/activity/ItemsList.java
+++ b/clients/android/NewsBlur/src/com/newsblur/activity/ItemsList.java
@@ -54,14 +54,11 @@ public abstract class ItemsList extends NbActivity implements StateChangedListen
currentState = (StateFilter) getIntent().getSerializableExtra(EXTRA_STATE);
this.fs = createFeedSet();
- requestWindowFeature(Window.FEATURE_PROGRESS);
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
setContentView(R.layout.activity_itemslist);
fragmentManager = getFragmentManager();
- getActionBar().setDisplayHomeAsUpEnabled(true);
-
this.overlayStatusText = (TextView) findViewById(R.id.itemlist_sync_status);
}
diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java b/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java
index eaee0cb4c..4788b0254 100644
--- a/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java
+++ b/clients/android/NewsBlur/src/com/newsblur/activity/Reading.java
@@ -137,8 +137,6 @@ public abstract class Reading extends NbActivity implements OnPageChangeListener
defaultFeedView = (DefaultFeedView) getIntent().getSerializableExtra(EXTRA_DEFAULT_FEED_VIEW);
}
- getActionBar().setDisplayHomeAsUpEnabled(true);
-
// this value is expensive to compute but doesn't change during a single runtime
this.overlayRangeTopPx = (float) UIUtils.convertDPsToPixels(this, OVERLAY_RANGE_TOP_DP);
this.overlayRangeBotPx = (float) UIUtils.convertDPsToPixels(this, OVERLAY_RANGE_BOT_DP);
diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedItemsList.java b/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedItemsList.java
index bc23bf125..dd40c3cc9 100644
--- a/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedItemsList.java
+++ b/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedItemsList.java
@@ -32,8 +32,7 @@ public class SocialFeedItemsList extends ItemsList {
socialFeed = (SocialFeed) getIntent().getSerializableExtra(EXTRA_SOCIAL_FEED);
super.onCreate(bundle);
- setTitle(socialFeed.feedTitle);
- UIUtils.setActionBarImage(this, socialFeed.photoUrl);
+ UIUtils.setCustomActionBar(this, socialFeed.photoUrl, socialFeed.feedTitle);
if (itemListFragment == null) {
itemListFragment = SocialFeedItemListFragment.newInstance(socialFeed, currentState, getDefaultFeedView());
diff --git a/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedReading.java b/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedReading.java
index 8002875aa..58872d6b6 100644
--- a/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedReading.java
+++ b/clients/android/NewsBlur/src/com/newsblur/activity/SocialFeedReading.java
@@ -16,8 +16,7 @@ public class SocialFeedReading extends Reading {
socialFeed = (SocialFeed) getIntent().getSerializableExtra(EXTRA_SOCIAL_FEED);
- setTitle(socialFeed.feedTitle);
- UIUtils.setActionBarImage(this, socialFeed.photoUrl);
+ UIUtils.setCustomActionBar(this, socialFeed.photoUrl, socialFeed.feedTitle);
readingAdapter = new MixedFeedsReadingAdapter(getFragmentManager(), defaultFeedView, socialFeed.userId);
diff --git a/clients/android/NewsBlur/src/com/newsblur/util/UIUtils.java b/clients/android/NewsBlur/src/com/newsblur/util/UIUtils.java
index f4dcfc6fa..613712036 100644
--- a/clients/android/NewsBlur/src/com/newsblur/util/UIUtils.java
+++ b/clients/android/NewsBlur/src/com/newsblur/util/UIUtils.java
@@ -5,6 +5,7 @@ import static android.graphics.Color.WHITE;
import static android.graphics.PorterDuff.Mode.DST_IN;
import android.app.Activity;
+import android.app.ActionBar;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
@@ -17,9 +18,15 @@ import android.graphics.drawable.BitmapDrawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Handler;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.ImageView;
+import android.widget.TextView;
import android.widget.Toast;
+import com.newsblur.R;
import com.newsblur.activity.NewsBlurApplication;
public class UIUtils {
@@ -80,35 +87,28 @@ public class UIUtils {
}
}
- public static int getActionBarHeight(Context context) {
- TypedArray atts = context.getTheme().obtainStyledAttributes(new int[] { android.R.attr.actionBarSize });
- int h = (int) atts.getDimension(0, 0);
- atts.recycle();
- return h;
- }
-
- public static void setActionBarImage(final Activity activity, final String url) {
- new AsyncTask() {
+ public static void setCustomActionBar(final Activity activity, String url, String title) {
+ activity.getActionBar().setDisplayShowCustomEnabled(true);
+ activity.getActionBar().setDisplayShowTitleEnabled(false);
+ activity.getActionBar().setDisplayShowHomeEnabled(false);
+ View v = LayoutInflater.from(activity).inflate(R.layout.actionbar_custom_icon, null);
+ TextView titleView = ((TextView) v.findViewById(R.id.actionbar_text));
+ titleView.setText(title);
+ titleView.setOnClickListener(new OnClickListener() {
@Override
- protected Void doInBackground(Void... arg) {
- Bitmap icon = ((NewsBlurApplication) activity.getApplicationContext()).getImageLoader().tryGetImage(url);
- if (icon != null) {
- // If setLogo() is called with a raw image, it isn't scaled up or down, but drawn raw. Wrapping
- // the icon in a BitmapDrawable lets it scale up. Note, though, that the iconSize is actually
- // ignored on virtually all platforms and the actionbar re-resizes it up to full height, so
- // attempting to add padding will silently fail.
- int iconSize = getActionBarHeight(activity);
- Bitmap scaledIcon = Bitmap.createScaledBitmap(icon, iconSize, iconSize, false);
- final BitmapDrawable draw = new BitmapDrawable(activity.getResources(), scaledIcon);
- activity.runOnUiThread(new Runnable() {
- public void run() {
- activity.getActionBar().setLogo(draw);
- }
- });
- }
- return null;
+ public void onClick(View v) {
+ activity.finish();
}
- }.execute();
+ });
+ ImageView iconView = ((ImageView) v.findViewById(R.id.actionbar_icon));
+ ((NewsBlurApplication) activity.getApplicationContext()).getImageLoader().displayImage(url, iconView, false);
+ iconView.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ activity.finish();
+ }
+ });
+ activity.getActionBar().setCustomView(v, new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT));
}
/**