Android 4.4(KitKat) introduced translucent system UI styling for status and navigation bars.
Jgilfelt repository on Git-hub demonstrated how to use it.
Download Source Code Download
Firstly use 4.4+ library, then copy this file into your package as SystemBarTintManager.java .
import
android.annotation.SuppressLint;
import
android.annotation.TargetApi;
import
android.app.Activity;
import
android.content.Context;
import
android.content.res.Configuration;
import
android.content.res.Resources;
import
android.content.res.TypedArray;
import
android.graphics.drawable.Drawable;
import
android.os.Build;
import
android.util.DisplayMetrics;
import
android.util.TypedValue;
import
android.view.Gravity;
import android.view.View;
import
android.view.ViewConfiguration;
import
android.view.ViewGroup;
import
android.view.Window;
import
android.view.WindowManager;
import
android.widget.FrameLayout.LayoutParams;
import
java.lang.reflect.Method;
/**
* Class to manage status and navigation bar
tint effects when using KitKat
* translucent system UI modes.
*
*/
public class
SystemBarTintManager {
static {
// Android allows a system property to
override the presence of the navigation bar.
// Used by the emulator.
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.KITKAT) {
try {
Class c = Class.forName("android.os.SystemProperties");
Method m = c.getDeclaredMethod("get", String.class);
m.setAccessible(true);
sNavBarOverride = (String)
m.invoke(null, "qemu.hw.mainkeys");
} catch (Throwable e) {
sNavBarOverride = null;
}
}
}
/**
* The default system bar tint color
value.
*/
// public static final int
DEFAULT_TINT_COLOR = 0x99000000;
public static final int DEFAULT_TINT_COLOR = 0x00000000;
private static String sNavBarOverride;
private final SystemBarConfig
mConfig;
private boolean mStatusBarAvailable;
private boolean mNavBarAvailable;
private boolean mStatusBarTintEnabled;
private boolean mNavBarTintEnabled;
private View mStatusBarTintView;
private View mNavBarTintView;
/**
* Constructor. Call this in the host
activity onCreate method after its
* content view has been set. You should
always create new instances when
* the host activity is recreated.
*
* @param activity The
host activity.
*/
@TargetApi(19)
public
SystemBarTintManager(Activity activity) {
Window win = activity.getWindow();
ViewGroup decorViewGroup = (ViewGroup)
win.getDecorView();
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.KITKAT) {
// check theme attrs
int[] attrs =
{android.R.attr.windowTranslucentStatus,
android.R.attr.windowTranslucentNavigation};
TypedArray a =
activity.obtainStyledAttributes(attrs);
try {
mStatusBarAvailable =
a.getBoolean(0, false);
mNavBarAvailable = a.getBoolean(1,
false);
} finally {
a.recycle();
}
// check window flags
WindowManager.LayoutParams
winParams = win.getAttributes();
int bits =
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if ((winParams.flags & bits) !=
0) {
mStatusBarAvailable = true;
}
bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
if ((winParams.flags & bits) !=
0) {
mNavBarAvailable = true;
}
}
mConfig = new
SystemBarConfig(activity, mStatusBarAvailable, mNavBarAvailable);
// device might not have virtual
navigation keys
if (!mConfig.hasNavigtionBar())
{
mNavBarAvailable = false;
}
if (mStatusBarAvailable) {
setupStatusBarView(activity,
decorViewGroup);
}
if (mNavBarAvailable) {
setupNavBarView(activity,
decorViewGroup);
}
}
/**
* Enable tinting of the system status bar.
*
* If the platform is running Jelly Bean or
earlier, or translucent system
* UI modes have not been enabled in either
the theme or via window flags,
* then this method does nothing.
*
* @param enabled True
to enable tinting, false to disable it (default).
*/
public void
setStatusBarTintEnabled(boolean enabled) {
mStatusBarTintEnabled = enabled;
if (mStatusBarAvailable) {
mStatusBarTintView.setVisibility(enabled
? View.VISIBLE : View.GONE);
}
}
/**
* Enable tinting of the system navigation
bar.
*
* If the platform does not have soft
navigation keys, is running Jelly Bean
* or earlier, or translucent system UI
modes have not been enabled in either
* the theme or via window flags, then this
method does nothing.
*
* @param enabled True
to enable tinting, false to disable it (default).
*/
public void
setNavigationBarTintEnabled(boolean enabled) {
mNavBarTintEnabled = enabled;
if (mNavBarAvailable) {
mNavBarTintView.setVisibility(enabled
? View.VISIBLE : View.GONE);
}
}
/**
* Apply the specified color tint to
all system UI bars.
*
* @param color The color
of the background tint.
*/
public void setTintColor(int color) {
setStatusBarTintColor(color);
setNavigationBarTintColor(color);
}
/**
* Apply the specified drawable or color
resource to all system UI bars.
*
* @param res The
identifier of the resource.
*/
public void
setTintResource(int res) {
setStatusBarTintResource(res);
setNavigationBarTintResource(res);
}
/**
* Apply the specified drawable to
all system UI bars.
*
* @param drawable The drawable
to use as the background, or null to remove it.
*/
public void
setTintDrawable(Drawable drawable) {
setStatusBarTintDrawable(drawable);
setNavigationBarTintDrawable(drawable);
}
/**
* Apply the specified alpha to all system
UI bars.
*
* @param alpha The
alpha to use
*/
public void setTintAlpha(float alpha) {
setStatusBarAlpha(alpha);
setNavigationBarAlpha(alpha);
}
/**
* Apply the specified color tint to
the system status bar.
*
* @param color The color
of the background tint.
*/
public void
setStatusBarTintColor(int color) {
if (mStatusBarAvailable) {
mStatusBarTintView.setBackgroundColor(color);
}
}
/**
* Apply the specified drawable or color
resource to the system status bar.
*
* @param res The
identifier of the resource.
*/
public void
setStatusBarTintResource(int res) {
if (mStatusBarAvailable) {
mStatusBarTintView.setBackgroundResource(res);
}
}
/**
* Apply the specified drawable to
the system status bar.
*
* @param drawable The drawable
to use as the background, or null to remove it.
*/
@SuppressWarnings("deprecation")
public void
setStatusBarTintDrawable(Drawable drawable) {
if (mStatusBarAvailable) {
mStatusBarTintView.
}
}
/**
* Apply the specified alpha to the system
status bar.
*
* @param alpha The
alpha to use
*/
@TargetApi(11)
public void
setStatusBarAlpha(float alpha) {
if (mStatusBarAvailable &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mStatusBarTintView.setAlpha(alpha);
}
}
/**
* Apply the specified color tint to
the system navigation bar.
*
* @param color The color
of the background tint.
*/
public void
setNavigationBarTintColor(int color) {
if (mNavBarAvailable) {
mNavBarTintView.setBackgroundColor(color);
}
}
/**
* Apply the specified drawable or color
resource to the system navigation bar.
*
* @param res The
identifier of the resource.
*/
public void
setNavigationBarTintResource(int res) {
if (mNavBarAvailable) {
mNavBarTintView.setBackgroundResource(res);
}
}
/**
* Apply the specified drawable to
the system navigation bar.
*
* @param drawable The drawable
to use as the background, or null to remove it.
*/
@SuppressWarnings("deprecation")
public void
setNavigationBarTintDrawable(Drawable drawable) {
if (mNavBarAvailable) {
mNavBarTintView.
}
}
/**
* Apply the specified alpha to the system
navigation bar.
*
* @param alpha The
alpha to use
*/
@TargetApi(11)
public void
setNavigationBarAlpha(float alpha) {
if (mNavBarAvailable &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mNavBarTintView.setAlpha(alpha);
}
}
/**
* Get the system bar configuration.
*
* @return The system
bar configuration for the current device configuration.
*/
public SystemBarConfig
getConfig() {
return mConfig;
}
/**
* Is tinting enabled for the system status
bar?
*
* @return True if
enabled, False otherwise.
*/
public boolean
isStatusBarTintEnabled() {
return mStatusBarTintEnabled;
}
/**
* Is tinting enabled for the system
navigation bar?
*
* @return True if
enabled, False otherwise.
*/
public boolean
isNavBarTintEnabled() {
return mNavBarTintEnabled;
}
private void
setupStatusBarView(Context context, ViewGroup decorViewGroup) {
mStatusBarTintView = new View(context);
LayoutParams params = new
LayoutParams(LayoutParams.MATCH_PARENT, mConfig.getStatusBarHeight());
params.gravity = Gravity.TOP;
if (mNavBarAvailable && !mConfig.isNavigationAtBottom())
{
params.rightMargin = mConfig.getNavigationBarWidth();
}
mStatusBarTintView.setLayoutParams(params);
mStatusBarTintView.setBackgroundColor(DEFAULT_TINT_COLOR);
mStatusBarTintView.setVisibility(View.GONE);
decorViewGroup.addView(mStatusBarTintView);
}
private void
setupNavBarView(Context context, ViewGroup decorViewGroup) {
mNavBarTintView = new View(context);
LayoutParams params;
if (mConfig.isNavigationAtBottom())
{
params = new
LayoutParams(LayoutParams.MATCH_PARENT, mConfig.getNavigationBarHeight());
params.gravity = Gravity.BOTTOM;
} else {
params = new LayoutParams(mConfig.getNavigationBarWidth(),
LayoutParams.MATCH_PARENT);
params.gravity = Gravity.RIGHT;
}
mNavBarTintView.setLayoutParams(params);
mNavBarTintView.setBackgroundColor(DEFAULT_TINT_COLOR);
mNavBarTintView.setVisibility(View.GONE);
decorViewGroup.addView(mNavBarTintView);
}
/**
* Class which describes system bar sizing
and other characteristics for the current
* device configuration.
*
*/
public static class SystemBarConfig
{
private static final String STATUS_BAR_HEIGHT_RES_NAME = "status_bar_height";
private static final String NAV_BAR_HEIGHT_RES_NAME = "navigation_bar_height";
private static final String NAV_BAR_HEIGHT_LANDSCAPE_RES_NAME = "navigation_bar_height_landscape";
private static final String NAV_BAR_WIDTH_RES_NAME = "navigation_bar_width";
private static final String SHOW_NAV_BAR_RES_NAME = "config_showNavigationBar";
private final boolean mTranslucentStatusBar;
private final boolean mTranslucentNavBar;
private final int mStatusBarHeight;
private final int mActionBarHeight;
private final boolean mHasNavigationBar;
private final int mNavigationBarHeight;
private final int mNavigationBarWidth;
private final boolean mInPortrait;
private final float mSmallestWidthDp;
private
SystemBarConfig(Activity activity, boolean
translucentStatusBar, boolean traslucentNavBar) {
Resources res = activity.getResources();
mInPortrait =
(res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
mSmallestWidthDp =
getSmallestWidthDp(activity);
mStatusBarHeight =
getInternalDimensionSize(res, STATUS_BAR_HEIGHT_RES_NAME);
mActionBarHeight =
getActionBarHeight(activity);
mNavigationBarHeight =
getNavigationBarHeight(activity);
mNavigationBarWidth =
getNavigationBarWidth(activity);
mHasNavigationBar = (mNavigationBarHeight > 0);
mTranslucentStatusBar =
translucentStatusBar;
mTranslucentNavBar =
traslucentNavBar;
}
@TargetApi(14)
private int
getActionBarHeight(Context context) {
int result = 0;
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
TypedValue tv = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
result = TypedValue.complexToDimensionPixelSize(tv.data,
context.getResources().getDisplayMetrics());
}
return result;
}
@TargetApi(14)
private int
getNavigationBarHeight(Context context) {
Resources res =
context.getResources();
int result = 0;
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if
(hasNavBar(context)) {
String key;
if (mInPortrait) {
key = NAV_BAR_HEIGHT_RES_NAME;
} else {
key = NAV_BAR_HEIGHT_LANDSCAPE_RES_NAME;
}
return
getInternalDimensionSize(res, key);
}
}
return result;
}
@TargetApi(14)
private int
getNavigationBarWidth(Context context) {
Resources res =
context.getResources();
int result = 0;
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if
(hasNavBar(context)) {
return
getInternalDimensionSize(res, NAV_BAR_WIDTH_RES_NAME);
}
}
return result;
}
@TargetApi(14)
private boolean
hasNavBar(Context context) {
Resources res =
context.getResources();
int resourceId =
res.getIdentifier(SHOW_NAV_BAR_RES_NAME, "bool", "android");
if (resourceId !=
0) {
boolean hasNav =
res.getBoolean(resourceId);
// check override flag (see
static block)
if ("1".equals(sNavBarOverride)) {
hasNav = false;
} else if ("0".equals(sNavBarOverride)) {
hasNav = true;
}
return hasNav;
} else { // fallback
return
!ViewConfiguration.get(context).hasPermanentMenuKey();
}
}
private int
getInternalDimensionSize(Resources res, String key) {
int result = 0;
int resourceId =
res.getIdentifier(key, "dimen", "android");
if (resourceId
> 0) {
result =
res.getDimensionPixelSize(resourceId);
}
return result;
}
@SuppressLint("NewApi")
private float
getSmallestWidthDp(Activity activity) {
DisplayMetrics metrics = new
DisplayMetrics();
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.JELLY_BEAN) {
activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
} else {
// TODO this is not
correct, but we don't really care pre-kitkat
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
}
float widthDp =
metrics.widthPixels / metrics.density;
float heightDp = metrics.heightPixels / metrics.density;
return Math.min(widthDp,
heightDp);
}
/**
* Should a navigation bar appear at
the bottom of the screen in the current
* device configuration? A navigation
bar may appear on the right side of
* the screen in certain
configurations.
*
* @return True if
navigation should appear at the bottom of the screen, False otherwise.
*/
public boolean
isNavigationAtBottom() {
return (mSmallestWidthDp >= 600 || mInPortrait);
}
/**
* Get the height of the system status
bar.
*
* @return The height of
the status bar (in pixels).
*/
public int
getStatusBarHeight() {
return mStatusBarHeight;
}
/**
* Get the height of the action bar.
*
* @return The height of
the action bar (in pixels).
*/
public int
getActionBarHeight() {
return mActionBarHeight;
}
/**
* Does this device have a system
navigation bar?
*
* @return True if this
device uses soft key navigation, False otherwise.
*/
public boolean
hasNavigtionBar() {
return mHasNavigationBar;
}
/**
* Get the height of the system
navigation bar.
*
* @return The height of
the navigation bar (in pixels). If the device does not have
* soft navigation keys, this will
always return 0.
*/
public int
getNavigationBarHeight() {
return mNavigationBarHeight;
}
/**
* Get the width of the system
navigation bar when it is placed vertically on the screen.
*
* @return The width of
the navigation bar (in pixels). If the device does not have
* soft navigation keys, this will
always return 0.
*/
public int
getNavigationBarWidth() {
return mNavigationBarWidth;
}
/**
* Get the layout inset for any
system UI that appears at the top of the screen.
*
* @param withActionBar
True to include the height of the action bar, False otherwise.
* @return The layout inset
(in pixels).
*/
public int
getPixelInsetTop(boolean withActionBar) {
return (mTranslucentStatusBar ? mStatusBarHeight : 0) +
(withActionBar ? mActionBarHeight : 0);
}
/**
* Get the layout inset for any
system UI that appears at the bottom of the screen.
*
* @return The layout inset
(in pixels).
*/
public int
getPixelInsetBottom() {
if (mTranslucentNavBar &&
isNavigationAtBottom()) {
return mNavigationBarHeight;
} else {
return 0;
}
}
/**
* Get the layout inset for any
system UI that appears at the right of the screen.
*
* @return The layout inset
(in pixels).
*/
public int
getPixelInsetRight() {
if (mTranslucentNavBar &&
!isNavigationAtBottom()) {
return mNavigationBarWidth;
} else {
return 0;
}
}
}
}
|
Styles
To enable Transparency use TranslucentDecor theme like "android:Theme.Holo.Light.NoActionBar.TranslucentDecor".
Here are the style files-
A. values folder->styles.xml
<resources>
<!--
Base application theme, dependent on
API level. This theme is replaced
by AppBaseTheme from
res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme"
parent="android:Theme">
<!--
Theme customizations available in
newer API levels can go in
res/values-vXX/styles.xml, while
customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme"
parent="AppBaseTheme">
<!-- All customizations that are
NOT specific to a particular API-level can go here. -->
</style>
<style name="FullBleedTheme"
parent="android:Theme.Light.NoTitleBar">
<!-- All customizations that are
NOT specific to a particular API-level can go here. -->
</style>
<style name="ActionBarTheme"
parent="android:Theme.Light">
<!-- All customizations that are
NOT specific to a particular API-level can go here. -->
</style>
</resources>
|
B. values-v11 folder->styles.xml
<resources>
<!--
Base application theme for API 11+.
This theme completely replaces
AppBaseTheme from res/values/styles.xml
on API 11+ devices.
-->
<style name="AppBaseTheme"
parent="android:Theme.Holo.Light">
<!-- API 11 theme customizations
can go here. -->
</style>
</resources>
|
C. values-v14 folder->styles.xml
<resources>
<!--
Base application theme for API 14+.
This theme completely replaces
AppBaseTheme from BOTH
res/values/styles.xml and
res/values-v11/styles.xml on API 14+
devices.
-->
<style name="AppBaseTheme"
parent="android:Theme.Holo">
<!-- API 14 theme customizations
can go here. -->
</style>
<style name="FullBleedTheme"
parent="android:Theme.Holo.Light.NoActionBar">
<!-- API 14 theme customizations
can go here. -->
</style>
<style name="ActionBarTheme"
parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations
can go here. -->
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle"
parent="android:Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/actionbar_bg</item>
</style>
</resources>
|
D. values-v19 folder->styles.xml
<resources>
<!--
Base application theme for API 19+.
This theme completely replaces
AppBaseTheme from BOTH
res/values/styles.xml and
res/values-v11/styles.xml on API 19+
devices.
-->
<style name="FullBleedTheme"
parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor">
<!-- API 19 theme customizations
can go here. -->
</style>
</resources>
|
Colors
<?xml version="1.0"
encoding="utf-8"?>
<resources>
<color name="actionbar_bg">#FF0099CC</color>
<color name="statusbar_bg">#FF0099CC</color>
</resources>
|
How To Use
1. Make status bar and navigationbar transparent. Make DefaultActivity.java register in Manifest. Use FullBleedTheme.
<activity
android:name="com.tutorialsface.systembartint.DefaultActivity"
android:label="@string/default_example"
android:theme="@style/FullBleedTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="com.tutorialsface.systembartint.SAMPLE"
/>
</intent-filter>
</activity>
|
DefaultActivity.java
import
android.app.Activity;
import
android.os.Bundle;
public class DefaultActivity
extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_default);
// create our
manager instance after the content view is set
SystemBarTintManager
tintManager = new SystemBarTintManager(this);
// enable
status bar tint
tintManager.setStatusBarTintEnabled(true);
// enable
navigation bar tint
tintManager.setNavigationBarTintEnabled(true);
}
}
|
activity_default.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:clipToPadding="false"
tools:context=".DefaultActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:textSize="18sp"
android:text="@string/text" />
</ScrollView>
|
2. Make Actionbar and Status bar of Same color. Make MatchActionBarActivity.java and register in Manifest. Use ActionBarTheme
<activity
android:name="com.tutorialsface.systembartint.MatchActionBarActivity"
android:label="@string/match_actionbar_example"
android:theme="@style/ActionBarTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="com.tutorialsface.systembartint.SAMPLE"
/>
</intent-filter>
</activity>
|
MatchActionBarActivity.java
import
android.annotation.TargetApi;
import
android.app.Activity;
import
android.os.Build;
import
android.os.Bundle;
import
android.view.Window;
import
android.view.WindowManager;
public class
MatchActionBarActivity extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_match_actionbar);
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
}
SystemBarTintManager
tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.statusbar_bg);
}
@TargetApi(19)
private void
setTranslucentStatus(boolean on) {
Window
win = getWindow();
WindowManager.LayoutParams
winParams = win.getAttributes();
final int bits =
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
}
else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}
}
|
activity_match_actionbar.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MatchActionBarActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:textSize="18sp"
android:text="@string/text" />
</ScrollView>
|
3. Make Status bar and Navigation Bar of Colorful. Make ColorActivity.java and register in Manifest. Use FullBleedTheme.
<activity
android:name="com.tutorialsface.systembartint.ColorActivity"
android:label="@string/color_example"
android:theme="@style/FullBleedTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="com.tutorialsface.systembartint.SAMPLE"
/>
</intent-filter>
</activity>
|
ColorActivity.java
import
android.app.Activity;
import
android.graphics.Color;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
public class ColorActivity extends Activity {
private
SystemBarTintManager mTintManager;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_color);
mTintManager = new
SystemBarTintManager(this);
mTintManager.setStatusBarTintEnabled(true);
mTintManager.setNavigationBarTintEnabled(true);
applySelectedColor();
}
@Override
protected void
onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
applySelectedColor();
}
private void
applySelectedColor() {
mTintManager.setTintColor(Color.BLUE);
/**
* // set a custom tint color for all
system bars
* mTintManager.setTintColor(Color.parseColor("#99000FF"));
* // set a custom navigation bar resource
*
mTintManager.setNavigationBarTintResource(R.drawable.my_tint);
* // set a custom status bar drawable
*
mTintManager.setStatusBarTintDrawable(MyDrawable);
*/
}
}
|
activity_color.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:textSize="18sp"
android:text="@string/text" />
</ScrollView>
|
Download Source Code Download
No comments:
Post a Comment