I have a non-market app that was built to run on a specific device. Originally, this was on a device running 2.2, but now the app is targeting a specific device on 3.1 and I am adding in support for the Action Bar.
One of the apps Activities is required to be full-screen and have hidden the status bar and the Action Bar. This is achieved using the following in the manifest:
<activity
android:name=".activity.EditorActivity"
android:label="#string/activity_edit"
android:theme="#style/Canvas">
Which references this style:
<style name="Canvas" parent="#android:style/Theme.NoTitleBar.Fullscreen">
<item name="android:windowBackground">#color/bg_white</item>
</style>
So, after moving to 3.1, the effect works, in that the Activity is fullscreen, and everything is hidden as needed, but this of course hides the options menu from populating the Action Bar.
I know that if I leave the android:targetSdkVersion="8", the options menu is shown in the bottom navigation, but this seems like a bit of a hack - is there any other way or 'best practice' for this? I basically have to set android:targetSdkVersion="12" to ensure the app works and isn't put onto older devices so this won't be a permanent solution.
I've decided to stop trying to swim upstream and have switched to using a translucent Action Bar that is overlaid - it works perfectly and is exactly what I had been doing prior to 3.x with my custom solution.
Custom Translucent Android ActionBar
Related
I am using the theme Theme.MaterialComponents.DayNight.NoActionBar (docs) for my Android app.
I am also calling getActionBar().hide() in the MainActivity.
On nearly all my devices, the Action Bar is not displaying. However on one device, a Pixel 6 running Android 12, I still see the Action Bar. I am sure I've installed the latest version of my app.
Any ideas why the Action Bar is still hanging around on this one device?
I had the same problem (I thought) until I realized that I had set the .NoActionBar style in my values/themes.xml but NOT in my values-night/themes.xml and the device with the "issue" was in dark mode.
Solution:
Set Theme.MaterialComponents.DayNight.NoActionBar in both values/themes.xml and values-night/themes.xml.
In my android app, which is just a webview displaying a responsive web site, I want to remove the title bar so I add this to the application section of the manifest XML.
android:theme="#android:style/Theme.NoTitleBar"
The problem is, I get two totally different ProgressDialog UI treatments. The one with the title bar is much nicer so I would like to keep it, but I don't want a title bar.
I believe this relates to the theme. I want to keep the theme, just not the title bar... at least I think. How do I keep the nicer styling, and hide the title bar instantly (not programmatically once the activity starts, that shows the title bar briefly)?
The problem is that Theme.NoTitleBar comes from pre-Honeycomb era, so it shows a pre-Honeycomb dialog.
If your app is API 11 or up you can simply switch by the Holo version of it (I honestly don't remember the name).
Or to support both older and newer device you'll have to use this type of approach Different Theme for different Android SDK versions to apply Theme.NoTitleBar to old devices and its holo counterpart for newer devices.
happy coding.
I know, this sounds dumb, but bear with me.
I use the following
android:minSdkVersion="8"
android:targetSdkVersion="17"
android:Theme.Holo"
When I run my app on 2.2 emulator, the menu button brings up my menu.
Whhen I run my app on 4.2 emulator, should the action bar not automatically be activated? I can see program icon + title. I have added some menu items like this:
<item android:id="#+id/itemShare" android:title="#string/titleShare"
android:icon="#android:drawable/ic_menu_share"
android:showAsAction="ifRoom"></item>
I then have defined
onCreateOptionsMenu
all my activies inherit from.
Yet, I see nothing "action bar" icons when running my app in 4.2 emulator. I must be missing something obvious.
I am very new to Android and Eclipse, but I am slightly confused of above. The way I do it, should that not be the way to get pre/post honeycomb compability assuming one does not want to use ActionbarSherlock?
Whhen I run my app on 4.2 emulator, should the action bar not automatically be activated?
Yes.
I can see program icon + title.
That is the action bar.
Yet, I see nothing "action bar" icons when running my app in 4.2 emulator. I must be missing something obvious.
Your emulator has decided that there is insufficient room to show the icons, so they are in the overflow. Depending on your emulator configuration, you activate the overflow by pressing the MENU button or by pressing the ... affordance in the action bar on the right.
The way I do it, should that not be the way to get pre/post honeycomb compability assuming one does not want to use ActionbarSherlock?
Yes.
I'm building an Android app using PhoneGap, and would like to make the copy/share menu that shows up after a long click on text to overlay the app. To do so, I have to set android:windowActionBar to true. This is what docs say:
Beware that hiding and removing the action bar causes your activity to
re-layout in order to account for the space consumed by the action
bar. If your activity regularly hides and shows the action bar (such
as in the Android Gallery app), you might want to use overlay mode.
Overlay mode draws the action bar on top of your activity layout
rather than in its own area of the screen. This way, your layout
remains fixed when the action bar hides and re-appears. To enable
overlay mode, create a theme for your activity and set
android:windowActionBarOverlay to true.
So I tried to apply this theme:
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light">
<item name="android:windowActionBarOverlay">true</item>
</style>
</resources>
to my application:
<application
android:icon="#drawable/icono_p"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
with no success.
Is there any way to set android:windowActionBar to true in a PhoneGap application?
EDIT:
The theme is actually being applied, but it just doesn't work as expected, the bar keeps resizing the app
I am pretty sure you would have to write a plugin for that for lower android versions. I am not sure since when this function is available but on my ICS 4.0 i can just copy and share any text out of any phonegap app without declaring anything special. its a system function and it should just work the same way you would copy and share text out of a standard browser.
what are you testing it on and which version?
Solved it. The problem was that the copy/share menu is not an action bar, but a contextual action bar shown when the contextual action mode starts. So, instead of android:windowActionBar, the property to be set to true is android:windowActionModeOverlay
I am completely baffled. I created an application with minSDK=4 and targetSDK=11. Compiled and ran on the Xoom tablet. I am not getting an Action Bar and cannot figure out what I have done wrong. I have been staring at the screen for hours and don't know what I have done that would have caused the bar to disappear. Help! Any suggestions on why I am not seeing the Action Bar?
You need to declare android:theme="#android:style/Theme.Holo" for Activity in Manifest xml.
The dev guide says like you only need to set the target SDK version, but it does not work.
I'm quoting from here:
"If you are using the Support Library APIs for the action bar, then you must use (or override) the Theme.AppCompat family of styles (rather than the Theme.Holo family, available in API level 11 and higher)."
I used android:theme="#style/Theme.AppCompat" in my manifest and the action bar appeared.
Romulus' answer, forcing the App to use the Holo theme will work but it results in a compile error if your minSDK is less than 11.
Check if you have defined a theme in the AndroidManifest:
android:theme="#style/XXXXXXXXXXXXXXXXX"
That means you're forcing the App to use a particular theme, so the action bar might not appear on Honeycomb or higher devices (it depends if the theme specifies an action bar). Delete this statement to cause the App to use the default device theme, so the Settings menu appears on pre-Honeycomb devices and the action bar appears on post-Honeycomb devices. Job done. Hope this helps.