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





Fantastic post.Much thanks again. Cool. online game
ReplyDeleteThanks-a-mundo for the blog.Really thank you! Great. tentoto daftar
ReplyDeleteWow, great blog post.Thanks Again. Keep writing. bmw777
ReplyDeleteReally enjoyed this blog article.Really looking forward to read more. Will read on... togel resmi
ReplyDeleteReally appreciate you sharing this article post.Really looking forward to read more. Really Great. coloksgp
ReplyDeleteI appreciate you sharing this blog.Really thank you! Awesome. alexistogel
ReplyDelete