I use the theme to show my WelcomeActivity
#android:style/Theme.NoTitleBar.Fullscreen
But I found it will have a period of black background when the app start
So I want to change the background of this theme
then I use...
<style name="WelcomeTheme" parent="#android:style/Theme.NoTitleBar.Fullscreen">
<item name="android:windowBackground">#drawable/welcome_img</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
</style>
Although the background is changed , the Actionbar is also showing!!
the Actionbar doesn't show when I use Theme.NoTitleBar.Fullscreen
but it's showing when I use WelcomeTheme
how should I remove the ActionBar
Thanks for your help :)
-
By the way , in my WelcomeActivity extends Activity but not ActionBarActivity
Did you try one of those?
in Activity;
getActionBar().hide();
in Fragment;
getActivity().getActionBar().hide();
1. Make you welcome activity.
2. Go to styles xml file and create a style like that:
<!-- BWelcome application theme. -->
<style name="WelcomeTheme"
parent="android:Theme.DeviceDefault.NoActionBar.Fullscreen">
<!-- Customize your theme here. -->
</style>
3. Go to manifest file and add this to your welcome activity:
android:theme="#style/WelcomeTheme"
4. Add your welcome logo in an ImageView
5. Advice: Never use Java code if you can do it with XML
Hope it helps!
You can do this way:
WelcomeActivity extends ActionBarActivity:
on onCreate();
getSupportActionBar.hide();
In Layout file:
setBackground to Parent View:
Hope this will help you.
Related
i am new in Android development in java
my activity_main.xml file is look like this
But when i run this application in my pixel 3 phone than it's look's like
why this design are different ?
As seen in background, you ignore missing constraints. When working with ConstraintLayout you must provide at least one horizontal and one vertical constraint, otherwise views could jump, and I believe IDE gave u that error.
check your style file.
By default is with Dialog.
u can change it with No Dialog
Sorry i mean
the line
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
u can change the theme with no actionbar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
there are many variants
if you want to have a full screen theme like Design(activity_main.xml):
solution 1: go into the manifest and use a full screen theme.
<activity
.
.
android:theme="#android:style/Theme.NoTitleBar.Fullscreen">
solution 2:
Just add the following attribute to your current theme:
<item name="android:windowFullscreen">true</item>
for example :
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/orange</item>
<item name="colorPrimaryDark">#android:color/holo_orange_dark</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
solution 3 :
public class MainActivity extends AppCompatActivity {
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
}
and for manage your buttons, read Dorian's answer to Design and actual app look same.
I want to give the users of my app the option to change the background of the whole app . My solution is to create a button and in the onclicklistener, i would change the background of each activity separately with setBackgroundResource.
Is there a better way to do this?Or my way is sufficient?
Put this style in res>values>styles.xml
<style name="bgThemeDark" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">#drawable/bg1</item>
</style>
and
<style name="bgThemeLight" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">#drawable/bg2</item>
</style>
Change #drawable/bg2 and #drawable/bg1 with your background resource.
Then make an BaseActivity in your app, extend all activity by BaseActivity.
Then write this in BaseActivity onCreate
boolean darkTheme = true;
public void onCreate(Bundle savedInstanceState) {
setTheme(darkTheme ? R.style.bgThemeDark:R.style.bgThemeLight);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
You can also set this in manifest if you don't want change theme at run time.
<application
android:theme="#style/CustomBackgroundTheme"
or
<activity
android:name=".appClasses.activities.ActivityMain"
android:theme="#style/CustomBackgroundTheme"
>
Caution: You should not set any background of any activity layout parent nodes.
I want to change the manifest style when the user chooses a setting in the preferences file or settings. I have a setting in my apk which includes a list of preferences with three entries {Style_1, Style_2, Style_3}. I want to change the style color, like primaryColor, when the user clicks a style. How can I do this?
Yes you can do this easily, I do it all the time.
Just call this method before setContentView like this:
setTheme(R.style.Theme);
setContentView(R.layout.activity_layout);
Now what I do is that i take a static int variable in the app constants and change it according to my theme. Then i do something like this
//This is in my constants file
public static int CURRENT_THEME = R.style.AppTheme;
//This is in my onCreate of every Activity.
setTheme(Constants.CURRENT_THEME);
setContentView(R.layout.activity_layout);
Hope this helps.
Yes you can set Theme like this:
activity.setTheme(R.style.theme_large);
activity.setTheme(R.style.theme_small);
<style name="theme_large">
<item name="main_background">#drawable/background_red</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="button_light">#color/button_light</item>
</style>
<style name="theme_small">
<item name="main_background">#drawable/background_red</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="button_light">#color/button_light</item>
</style>
Create Two Style
setTheme(darkTheme ? R.style.AppThemeDark : R.style.AppThemeLight);
<style name="AppThemeDark">
<item name="main_background">#drawable/background_dark</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="button_light">#color/button_dark</item>
</style>
<style name="AppThemeLight">
<item name="main_background">#drawable/background_light</item>
<item name="colorPrimaryDark">#color/colorPrimaryLight</item>
<item name="button_light">#color/button_light</item>
</style>
I think, setting theme after a button click or option choosen could be harsh for an Activity to handle.
What I am suggesting you is to reload your activity on button click but before that simply save the style_name , the user want to apply in internal memory or Shared Preferences. You can apply shared preference simply looking at here.
At the start of onCreate of your activity, apply that fetching part of shared preferences and apply the theme as user has indicated. This would help you to preserve the theme for that user until s/he uninstall that application or clears the app data.
If s/he is using the application for first time, the stored style_name string would be null so load your application with default theme.
You can simply reload your activity on button click by using the below code:
public void onClick (View v){
Intent intent = getIntent();
finish();
startActivity(intent);
}
Hope it helps !!
I have an activity with a dialog theme (Theme.AppCompat.Light.Dialog.Alert)
Inside this activity i created a ViewPager because i want one image slider.
But my ViewPager create something like an actionBar before the slider. How can i remove it?
If my activity had an normal theme (not like a dialog) i could hide it doing the following code:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
But it doesn't work in a dialog theme....
EDIT
My problem:
I want remove the "PageViewExample" =/
i already tried the following string and nothing happens
requestWindowFeature(Window.FEATURE_NO_TITLE);
I just added some style to my theme.
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
Yeah pretty much the title. I tried different android styles, but I lose both the title and the action bar at the bottom. I also tried using
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setHomeButtonEnabled(false);
getActionBar().setDisplayUseLogoEnabled(false);
But with this I get a blank title bar. I want to remove the title bar completely. Does anyone know a solution for this? Thanks!
If you are using Theme.Holo.Light and want to use the Theme.Holo.Light.NoTitleBarBar variant on pre 3.2 devices you can add this to your styles.xml:
<style name="NoTitleBar" parent="#android:style/Theme.Holo.Light">
<item name="android:windowActionBar">true</item>
<item name="android:windowNoTitle">false</item>
and then set it as your activity's theme:
<activity android:theme="#style/NoTitleBar" ... />
In your oncreate do this
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
I found a solution: It is pretty much
<style name="MyActionBarStyle" parent="#android:style/Widget.Holo.ActionBar">
<item name="android:displayOptions"></item>
<item name="android:height">0dip</item>
</style>
I just sized it to zero and it works.