<words>
<w>androidversion</w>
<w>anonymized</w>
+ <w>appbarlayout</w>
<w>aren</w>
<w>bebdb</w>
<w>buildapi</w>
<w>buildversion</w>
<w>chromeversion</w>
<w>commitdiff</w>
+ <w>coordinatorlayout</w>
<w>eadd</w>
<w>exynos</w>
<w>intl</w>
<w>securitypatch</w>
<w>snackbar</w>
<w>snackbars</w>
+ <w>tablayout</w>
<w>techrepublic</w>
<w>textview</w>
<w>webkitversion</w>
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
<html>
+<head>
+ <style>
+ h3 {
+ color: 0D4781;
+ }
+
+ strong {
+ color: B71C1C;
+ }
+
+ item {
+ color: 1976D2;
+ font-weight: bold;
+ }
+ </style>
+</head>
+
<body>
-<h3><font color="0D4781">Privacy Browser Free</font></h3>
+<h3>Privacy Browser Free</h3>
<p><strong>Privacy Browser Free does not collect any user information</strong>.</p>
<hr />
-<h3><font color="0D4781">Advertisements</font></h3>
+<h3>Advertisements</h3>
<p>Privacy Browser Free displays a banner add across the bottom of the screen using the Google's AdMob network,
which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
Note that unless you have <a href="http://www.techrepublic.com/article/pro-tip-how-to-opt-out-of-interest-based-ads-on-your-android-phone/">opted out of interest-based ads</a>,
the advertiser will receive a copy of your unique device advertising ID, which allows them to track your device across apps.
AdMob reports <em>anonymized summaries</em> of the following information. <strong>Stoutner may use this information for any purpose</strong>.</p>
<ul>
- <li><strong><font color="0D4781">Total impressions</font></strong></li>
- <li><strong><font color="0D4781">Total clicks</font></strong></li>
- <li><strong><font color="0D4781">Platforms</font></strong> (eg. high-end mobile devices, tablets)</li>
- <li><strong><font color="0D4781">Activity by country</font></strong></li>
+ <li><item>Total impressions</item></li>
+ <li><item>Total clicks</item></li>
+ <li><item>Platforms</item> (eg. high-end mobile devices, tablets)</li>
+ <li><item>Activity by country</item></li>
</ul>
<hr />
-<h3><font color="0D4781">Google Play Ratings</font></h3>
+<h3>Google Play Ratings</h3>
<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
<strong>Stoutner may use this information for any purpose</strong>.</p>
<ul>
- <li><strong><font color="0D4781">Country</font></strong></li>
- <li><strong><font color="0D4781">Language</font></strong></li>
- <li><strong><font color="0D4781">App version</font></strong></li>
- <li><strong><font color="0D4781">Android version</font></strong></li>
- <li><strong><font color="0D4781">Device</font></strong> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
- <li><strong><font color="0D4781">Tablets</font></strong> (eg. Tablets 10" and above)</li>
+ <li><item>Country</item></li>
+ <li><item>Language</item></li>
+ <li><item>App version</item></li>
+ <li><item>Android version</item></li>
+ <li><item>Device</item> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+ <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
</ul>
<hr />
-<h3><font color="0D4781">Google Play Reviews</font></h3>
+<h3>Google Play Reviews</h3>
<p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
Google provides some or all of the following information to the developer.
<strong>Stoutner may use this information for any purpose</strong>.</p>
<ul>
- <li><strong><font color="0D4781">Version code</font></strong> (eg. 7)</li>
- <li><strong><font color="0D4781">Version name</font></strong> (eg. 1.6)</li>
- <li><strong><font color="0D4781">Android version</font></strong> (eg. Android 5.1)</li>
- <li><strong><font color="0D4781">Device</font></strong> (eg. Galaxy S6 Edge+ [zenlte])</li>
- <li><strong><font color="0D4781">Manufacturer</font></strong> (eg. Samsung)</li>
- <li><strong><font color="0D4781">Device type</font></strong> (eg. Phone)</li>
- <li><strong><font color="0D4781">CPU make</font></strong> (eg. Samsung)</li>
- <li><strong><font color="0D4781">CPU model</font></strong> (eg. Exynos 7420)</li>
- <li><strong><font color="0D4781">Screen density</font></strong> (eg. 560 dpi)</li>
- <li><strong><font color="0D4781">Screen size</font></strong> (eg. 2560 x 1440)</li>
- <li><strong><font color="0D4781">RAM</font></strong> (eg. 4096 MB)</li>
- <li><strong><font color="0D4781">Native platform</font></strong> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
- <li><strong><font color="0D4781">OpenGL ES version</font></strong> (eg. 3.1)</li>
- <li><strong><font color="0D4781">Device language</font></strong> (eg. English)</li>
+ <li><item>Version code</item> (eg. 7)</li>
+ <li><item>Version name</item> (eg. 1.6)</li>
+ <li><item>Android version</item> (eg. Android 5.1)</li>
+ <li><item>Device</item> (eg. Galaxy S6 Edge+ [zenlte])</li>
+ <li><item>Manufacturer</item> (eg. Samsung)</li>
+ <li><item>Device type</item> (eg. Phone)</li>
+ <li><item>CPU make</item> (eg. Samsung)</li>
+ <li><item>CPU model</item> (eg. Exynos 7420)</li>
+ <li><item>Screen density</item> (eg. 560 dpi)</li>
+ <li><item>Screen size</item> (eg. 2560 x 1440)</li>
+ <li><item>RAM</item> (eg. 4096 MB)</li>
+ <li><item>Native platform</item> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+ <li><item>OpenGL ES version</item> (eg. 3.1)</li>
+ <li><item>Device language</item> (eg. English)</li>
</ul>
<hr />
-<p style="text-align: center;">Revision 1.2, 3 June 2016</p>
+<p style="text-align: center;"><em>Revision 1.2, 3 June 2016</em></p>
</body>
</html>
\ No newline at end of file
You should have received a copy of the GNU General Public License
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-<!-- android:layout_martinTop="?attr/actionBarSize" moves adRelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView. -->
+<!-- android:layout_martinTop="?attr/actionBarSize" moves adRelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView.
+ android:layout_weight="1" sets the RelativeLayout to fill the rest of the screen because it is encapsulated in a LinearLayout with android:orientation="vertical"-->
<RelativeLayout
android:id="@+id/adRelativeLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginTop="?attr/actionBarSize"
+ android:layout_height="0dp"
+ android:layout_weight="1"
tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
tools:showIn="@layout/coordinator_layout">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
- android:focusableInTouchMode="true"/>
+ android:focusableInTouchMode="true" />
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
\ No newline at end of file
<application
android:label="@string/privacy_browser"
android:icon="@mipmap/privacy_browser"
- android:theme="@style/AppTheme"
+ android:theme="@style/PrivacyBrowser"
android:allowBackup="false"
android:fullBackupContent="false" >
<activity
android:name=".MainWebViewActivity"
android:label="@string/privacy_browser"
- android:theme="@style/AppTheme.NoActionBar"
+ android:theme="@style/PrivacyBrowser.MainWebView"
android:configChanges="orientation|screenSize"
android:launchMode="singleTask"
android:persistableMode="persistNever" >
<activity
android:name=".SettingsActivity"
android:label="@string/privacy_browser_settings"
+ android:theme="@style/PrivacyBrowser.Settings"
android:parentActivityName=".MainWebViewActivity"
android:configChanges="orientation|screenSize"
android:persistableMode="persistNever" >
<activity
android:name=".AboutActivity"
android:label="@string/about_privacy_browser"
+ android:theme="@style/PrivacyBrowser.About"
android:parentActivityName=".MainWebViewActivity"
android:configChanges="orientation|screenSize"
android:persistableMode="persistNever" >
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
<html>
+<head>
+ <style>
+ h3 {
+ color: 0D4781;
+ }
+ </style>
+</head>
+
<body>
-<h4>1.6 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=151e4550065da8e740e8e3bd414ec30ae2a18c33">11 May 2016</a></font></h4>
+<h3>1.6</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=151e4550065da8e740e8e3bd414ec30ae2a18c33">11 May 2016</a> - minimum API 15, target API 23</p>
<ul>
<li>Add a setting to <a href="https://redmine.stoutner.com/issues/4">customize the search URLs</a>.</li>
<li>Add a setting to <a href="https://redmine.stoutner.com/issues/3">customize the browser’s user agent</a>.</li>
<hr />
-<h4>1.5 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=b0a048867d5582bc693ba8699a75aa93b4fa1b69">5 May 2016</a></font></h4>
+<h3>1.5</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=b0a048867d5582bc693ba8699a75aa93b4fa1b69">5 May 2016</a> - minimum API 15, target API 23</p>
<ul>
<li>Add the option to disable swipe to refresh so that certain websites, like Google Maps, will function correctly.</li>
</ul>
<hr />
-<h4>1.4 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=58e6c22da860871eadd1cbf214a30e88ced4f19e">28 April 2016</a></font></h4>
+<h3>1.4</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=58e6c22da860871eadd1cbf214a30e88ced4f19e">28 April 2016</a> - minimum API 15, target API 23</p>
<ul>
<li>Add controls for <a href="https://redmine.stoutner.com/issues/21">third-party cookies</a>.</li>
<li>Fix full screen video playback.</li>
<hr />
-<h4>1.3 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=4f704be746c00c0a29a52c28646e6d7cf2f9c53c">7 April 2016</a></font></h4>
+<h3>1.3</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=4f704be746c00c0a29a52c28646e6d7cf2f9c53c">7 April 2016</a> - minimum API 15, target API 23</p>
<ul>
<li>Create a <a href="https://redmine.stoutner.com/issues/17">navigation drawer</a>.</li>
</ul>
<hr />
-<h4>1.2 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 March 2016</a></font></h4>
+<h3>1.2</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 March 2016</a> - minimum API 15, target API 23</p>
<ul>
<li>Update launcher icon to make it bigger.</li>
<li>Replace all toast messages with <a href="https://redmine.stoutner.com/issues/12">snackbars</a>.</li>
<hr />
-<h4>1.1 <font color="0D4781">- minimum API 10, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 March 2016</a></font></h4>
+<h3>1.1</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 March 2016</a> - minimum API 10, target API 23</p>
<ul>
<li>Separate the standard and the free flavors so that Privacy Browser builds correctly on F-Droid.</li>
</ul>
<hr />
-<h4>1.0 <font color="0D4781">- minimum API 10, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6f7130bc4218755bea242a2108e4c4ad6f63dcf9">24 Feb 2016</a></font></h4>
+<h3>1.0</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6f7130bc4218755bea242a2108e4c4ad6f63dcf9">24 Feb 2016</a> - minimum API 10, target API 23</p>
<ul>
<li>Toggle JavaScript, DOM storage, and cookies.</li>
<li>Set default enabled status for JavaScript, DOM storage, and cookies.</li>
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
<html>
+<head>
+ <style>
+ h3 {
+ color: 0D4781;
+ }
+ </style>
+</head>
+
<body>
+<h3>Principle Developers</h3>
<p>Privacy Browser is primarily developed by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+<hr />
+
+<h3>Contributors</h3>
<p>Contributors are welcome to submit both <a href="https://www.stoutner.com/privacy-browser/contributors/">code and translations</a>.</p>
</body>
</html>
\ No newline at end of file
<html>
<head>
-<style>
-img.center {
- vertical-align: middle;
-}
-</style>
+ <style>
+ h3 {
+ color: 0D4781;
+ }
+
+ img.center {
+ vertical-align: middle;
+ }
+
+ img.left {
+ float: left;
+ }
+ </style>
</head>
<body>
-<h3><font color="0D4781">Copyright</font></h3>
+<h3>Copyright</h3>
<p>Privacy Browser is copyright © 2015-2016 by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
<hr />
-<h3><font color="0D4781">License</font></h3>
+<h3>License</h3>
<p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.
The full text of the license is at the bottom of this document.</p>
<hr/>
-<h3><font color="0D4781">Attributions</font></h3>
-
+<h3>Attributions</h3>
<p>The icons in Privacy Browser come from the Android Material icon set, which is released under the <a href=https://creativecommons.org/licenses/by/4.0/>CC-BY license</a>.</p>
-<p><img src="images/privacy_browser.png" height="32" width="32">
- <img src="images/privacy_browser_free.png" height="32" width="32">
- <img src="images/warning.png" height="32" width="32">
- <img src="images/javascript_enabled.png" height="32" width="32">
+<p><img class="left" src="images/privacy_browser.png" height="32" width="32">
+ <img class="left" src="images/privacy_browser_free.png" height="32" width="32">
+ <img class="left" src="images/warning.png" height="32" width="32">
+ <img class="left" src="images/javascript_enabled.png" height="32" width="32">
are derived from ic_security and ic_language. Modifications were made by Soren Stoutner in 2016.</p>
<p><img class="center" src="images/ic_language.png" height="32" width="32"> ic_language.</p>
<hr/>
-<h3><font color="0D4781">GNU General Public License</font></h3>
+<h3>GNU General Public License</h3>
<p>Version 3, 29 June 2007</p>
<p>Copyright © 2007 Free Software Foundation, Inc.
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
<html>
+<head>
+ <style>
+ h3 {
+ color: 0D4781;
+ }
+ </style>
+</head>
+
<body>
-<p>More information related to Privacy Browser is available on the website.</p>
+<h3>Websites</h3>
<ul>
- <li><a href="https://redmine.stoutner.com/projects/privacy-browser/issues">Bug Tracker and Feature Requests</a>.</li>
- <li><a href="https://redmine.stoutner.com/projects/privacy-browser/boards">Forum</a>.</li>
- <li><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">GitWeb</a>.</li>
+ <li><p><a href="https://redmine.stoutner.com/projects/privacy-browser/issues">Bug Tracker and Feature Requests</a>.</p></li>
+ <li><p><a href="https://redmine.stoutner.com/projects/privacy-browser/boards">Forum</a>.</p></li>
+ <li><p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">GitWeb</a>.</p></li>
</ul>
</body>
</html>
\ No newline at end of file
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
<html>
-<body>
-<h2>Privacy Browser uses the following permissions.</h2>
+<head>
+ <style>
+ h3 {
+ color: 0D4781;
+ }
+ </style>
+</head>
-<h3><font color="0D4781">Have full network access (<a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a>)</font></h3>
+<body>
+<h3>Have full network access</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a></p>
<p>Required for the WebView to access the internet. Without this permission, Privacy Browser would be “No Browser: Protecting Your Privacy by Staying Completely Off the Internet”.</p>
-<h3><font color="0D4781">Install shortcuts (<a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a>)</font></h3>
+<hr />
+
+<h3>Install shortcuts</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a></p>
<p>Required to add shortcuts for websites to the launcher desktop.</p>
</body>
</html>
\ No newline at end of file
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
<html>
+<head>
+ <style>
+ h3 {
+ color: 0D4781;
+ }
+
+ strong {
+ color: B71C1C;
+ }
+
+ item {
+ color: 1976D2;
+ font-weight: bold;
+ }
+ </style>
+</head>
+
<body>
-<h3><font color="0D4781">Privacy Browser</font></h3>
+<h3>Privacy Browser</h3>
<p><strong>Privacy Browser does not collect any user information</strong>.</p>
<hr />
-<h3><font color="0D4781">Google Play Ratings</font></h3>
+<h3>Google Play Ratings</h3>
<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
<strong>Stoutner may use this information for any purpose</strong>.</p>
<ul>
- <li><strong><font color="0D4781">Country</font></strong></li>
- <li><strong><font color="0D4781">Language</font></strong></li>
- <li><strong><font color="0D4781">App version</font></strong></li>
- <li><strong><font color="0D4781">Android version</font></strong></li>
- <li><strong><font color="0D4781">Device</font></strong> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
- <li><strong><font color="0D4781">Tablets</font></strong> (eg. Tablets 10" and above)</li>
+ <li><item>Country</item></li>
+ <li><item>Language</item></li>
+ <li><item>App version</item></li>
+ <li><item>Android version</item></li>
+ <li><item>Device</item> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+ <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
</ul>
<hr />
-<h3><font color="0D4781">Google Play Reviews</font></h3>
+<h3>Google Play Reviews</h3>
<p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
Google provides some or all of the following information to the developer.
<strong>Stoutner may use this information for any purpose</strong>.</p>
<ul>
- <li><strong><font color="0D4781">Version code</font></strong> (eg. 7)</li>
- <li><strong><font color="0D4781">Version name</font></strong> (eg. 1.6)</li>
- <li><strong><font color="0D4781">Android version</font></strong> (eg. Android 5.1)</li>
- <li><strong><font color="0D4781">Device</font></strong> (eg. Galaxy S6 Edge+ [zenlte])</li>
- <li><strong><font color="0D4781">Manufacturer</font></strong> (eg. Samsung)</li>
- <li><strong><font color="0D4781">Device type</font></strong> (eg. Phone)</li>
- <li><strong><font color="0D4781">CPU make</font></strong> (eg. Samsung)</li>
- <li><strong><font color="0D4781">CPU model</font></strong> (eg. Exynos 7420)</li>
- <li><strong><font color="0D4781">Screen density</font></strong> (eg. 560 dpi)</li>
- <li><strong><font color="0D4781">Screen size</font></strong> (eg. 2560 x 1440)</li>
- <li><strong><font color="0D4781">RAM</font></strong> (eg. 4096 MB)</li>
- <li><strong><font color="0D4781">Native platform</font></strong> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
- <li><strong><font color="0D4781">OpenGL ES version</font></strong> (eg. 3.1)</li>
- <li><strong><font color="0D4781">Device language</font></strong> (eg. English)</li>
+ <li><item>Version code</item> (eg. 7)</li>
+ <li><item>Version name</item> (eg. 1.6)</li>
+ <li><item>Android version</item> (eg. Android 5.1)</li>
+ <li><item>Device</item> (eg. Galaxy S6 Edge+ [zenlte])</li>
+ <li><item>Manufacturer</item> (eg. Samsung)</li>
+ <li><item>Device type</item> (eg. Phone)</li>
+ <li><item>CPU make</item> (eg. Samsung)</li>
+ <li><item>CPU model</item> (eg. Exynos 7420)</li>
+ <li><item>Screen density</item> (eg. 560 dpi)</li>
+ <li><item>Screen size</item> (eg. 2560 x 1440)</li>
+ <li><item>RAM</item> (eg. 4096 MB)</li>
+ <li><item>Native platform</item> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+ <li><item>OpenGL ES version</item> (eg. 3.1)</li>
+ <li><item>Device language</item> (eg. English)</li>
</ul>
<hr />
-<p style="text-align: center;">Revision 1.2, 3 June 2016</p>
+<p style="text-align: center;"><em>Revision 1.2, 3 June 2016</em></p>
</body>
</html>
\ No newline at end of file
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
+import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
public class AboutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.about_linearlayout);
+ setContentView(R.layout.about_coordinatorlayout);
+
+ // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
+ Toolbar supportAppBar = (Toolbar) findViewById(R.id.about_toolbar);
+ setSupportActionBar(supportAppBar);
+
+ // Display the home arrow on supportAppBar.
+ final ActionBar appBar = getSupportActionBar();
+ assert appBar != null;// This assert removes the incorrect warning on the following line that appBar might be null.
+ appBar.setDisplayHomeAsUpEnabled(true);
// Setup the ViewPager.
ViewPager aboutViewPager = (ViewPager) findViewById(R.id.about_viewpager);
@SuppressLint("SetJavaScriptEnabled")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.coordinator_layout);
+ setContentView(R.layout.main_coordinatorlayout);
// We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
Toolbar supportAppBar = (Toolbar) findViewById(R.id.appBar);
setSupportActionBar(supportAppBar);
+ final ActionBar appBar = getSupportActionBar();
- final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
+ // This is needed to get rid of the Android Studio warning that appBar might be null.
+ assert appBar != null;
+
+ // Add the custom url_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar.
+ appBar.setCustomView(R.layout.url_bar);
+ appBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
+
+ // Set the "go" button on the keyboard to load the URL in urlTextBox.
+ urlTextBox = (EditText) appBar.getCustomView().findViewById(R.id.urlTextBox);
+ urlTextBox.setOnKeyListener(new View.OnKeyListener() {
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ // If the event is a key-down event on the "enter" button, load the URL.
+ if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
+ // Load the URL into the mainWebView and consume the event.
+ try {
+ loadUrlFromTextBox();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ // If the enter key was pressed, consume the event.
+ return true;
+ } else {
+ // If any other key was pressed, do not consume the event.
+ return false;
+ }
+ }
+ });
- // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
- final ActionBar appBar = getSupportActionBar();
+ final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
// Implement swipe to refresh
swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
mainWebView = (WebView) findViewById(R.id.mainWebView);
- if (appBar != null) {
- // Add the custom url_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar.
- appBar.setCustomView(R.layout.url_bar);
- appBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
-
- // Set the "go" button on the keyboard to load the URL in urlTextBox.
- urlTextBox = (EditText) appBar.getCustomView().findViewById(R.id.urlTextBox);
- urlTextBox.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- // If the event is a key-down event on the "enter" button, load the URL.
- if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
- // Load the URL into the mainWebView and consume the event.
- try {
- loadUrlFromTextBox();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- // If the enter key was pressed, consume the event.
- return true;
- } else {
- // If any other key was pressed, do not consume the event.
- return false;
- }
- }
- });
- }
-
// Create the navigation drawer.
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
// The DrawerTitle identifies the drawer in accessibility mode.
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright 2016 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- android:fitsSystemWindows="true" moves the AppBar below the status bar.
+ When it is specified the theme should include <item name="android:windowTranslucentStatus">true</item>
+ to make the status bar transparent, darkened overlay. -->
+<android.support.design.widget.CoordinatorLayout
+ android:id="@+id/about_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:fitsSystemWindows="true" >
+
+ <!-- the LinearLayout with orientation="vertical" moves the ViewPager below the AppBarLayout. -->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical" >
+
+ <!-- We need to set android:background="@color/blue" here or any space to the right of the TabLayout on large devices will be white. -->
+ <android.support.design.widget.AppBarLayout
+ android:id="@+id/about_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="@color/blue"
+ android:theme="@style/PrivacyBrowser.AppBarOverlay" >
+
+ <!-- android:theme="@style/PrivacyBrowser.DarkAppBar" makes the text and icons in the AppBar white. -->
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/about_toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@color/blue"
+ android:theme="@style/PrivacyBrowser.DarkAppBar"
+ app:popupTheme="@style/PrivacyBrowser.PopupOverlay" />
+
+ <android.support.design.widget.TabLayout
+ android:id="@+id/about_tablayout"
+ xmlns:android.support.design="http://schemas.android.com/apk/res-auto"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android.support.design:tabBackground="@color/blue"
+ android.support.design:tabTextColor="@color/light_blue"
+ android.support.design:tabSelectedTextColor="@color/white"
+ android.support.design:tabIndicatorColor="@color/white"
+ android.support.design:tabMode="scrollable" />
+ </android.support.design.widget.AppBarLayout>
+
+ <!-- android:layout_weight="1" makes about_viewpager fill the rest of the screen. -->
+ <android.support.v4.view.ViewPager
+ android:id="@+id/about_viewpager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+ </LinearLayout>
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright 2016 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<LinearLayout
- android:id="@+id/about_linearlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <android.support.design.widget.TabLayout
- android:id="@+id/about_tablayout"
- xmlns:android.support.design="http://schemas.android.com/apk/res-auto"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android.support.design:tabBackground="@color/blue"
- android.support.design:tabTextColor="@color/light_blue"
- android.support.design:tabSelectedTextColor="@color/white"
- android.support.design:tabIndicatorColor="@color/white"
- android.support.design:tabMode="scrollable" />
-
- <!-- android:layout_weight="1" makes about_viewpager fill all the remaining space. -->
- <android.support.v4.view.ViewPager
- android:id="@+id/about_viewpager"
- android:layout_width="match_parent"
- android:layout_height="0px"
- android:layout_weight="1" />
-</LinearLayout>
\ No newline at end of file
xmlns:tools="http://schemas.android.com/tools">
<!--tools:ignore="ContentDescription" suppresses the lint warning about supplying a content description for the ImageView,
- which isn't needed in this case because the ImageView because is only decorative. -->
+ which isn't needed in this case because the ImageView is only decorative. -->
<ImageView
android:id="@+id/about_version_icon"
android:layout_width="wrap_content"
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright 2015-2016 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>>.
-
- Privacy Browser is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-
-<android.support.v4.widget.DrawerLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:id="@+id/drawerLayout"
- android:layout_height="match_parent"
- android:layout_width="match_parent">
-
- <!-- The main content view. -->
- <!-- android:fitsSystemWindows="true" moves rootCoordinatorLayout below the system status bar. -->
- <!-- Setting the layout root to be focusableInTouchMode prevents urlTextBox from stealing focus on launch and opening the keyboard. -->
- <android.support.design.widget.CoordinatorLayout
- android:id="@+id/rootCoordinatorLayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fitsSystemWindows="true"
- android:focusable="true"
- android:focusableInTouchMode="true" >
-
- <android.support.design.widget.AppBarLayout
- android:id="@+id/appBarLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:theme="@style/AppTheme.AppBarOverlay" >
-
- <android.support.v7.widget.Toolbar
- android:id="@+id/appBar"
- android:layout_width="match_parent"
- android:layout_height="?attr/actionBarSize"
- android:background="?attr/colorPrimary"
- app:popupTheme="@style/AppTheme.PopupOverlay" />
- </android.support.design.widget.AppBarLayout>
-
- <include layout="@layout/main_webview" />
- </android.support.design.widget.CoordinatorLayout>
-
- <!-- The navigation drawer. -->
- <android.support.design.widget.NavigationView
- android:id="@+id/navigationView"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_gravity="start"
- app:headerLayout="@layout/navigation_header"
- app:menu="@menu/menu_navigation"/>
-
- <!-- fullScreenVideoFrameLayout is used to display full screen videos. It is initially android:visibility="gone" to hide it from view. -->
- <FrameLayout
- android:id="@+id/fullScreenVideoFrameLayout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone"
- android:background="@color/black" />
-</android.support.v4.widget.DrawerLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright 2015-2016 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>>.
+
+ Privacy Browser is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
+
+<android.support.v4.widget.DrawerLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/drawerLayout"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <!-- android:fitsSystemWindows="true" moves rootCoordinatorLayout below the system status bar.
+ When it is specified the theme should include <item name="android:windowTranslucentStatus">true</item>.
+ Setting the layout root to be focusableInTouchMode prevents urlTextBox from stealing focus on launch and opening the keyboard. -->
+ <android.support.design.widget.CoordinatorLayout
+ android:id="@+id/rootCoordinatorLayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fitsSystemWindows="true"
+ android:focusable="true"
+ android:focusableInTouchMode="true" >
+
+ <!-- The purpose of the LinearLayout is to place the included main_webview below appBarLayout. -->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.design.widget.AppBarLayout
+ android:id="@+id/appBarLayout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:theme="@style/PrivacyBrowser.AppBarOverlay" >
+
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/appBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?attr/colorPrimary"
+ app:popupTheme="@style/PrivacyBrowser.PopupOverlay" />
+ </android.support.design.widget.AppBarLayout>
+
+ <include layout="@layout/main_webview" />
+ </LinearLayout>
+ </android.support.design.widget.CoordinatorLayout>
+
+ <!-- The navigation drawer. -->
+ <android.support.design.widget.NavigationView
+ android:id="@+id/navigationView"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ app:headerLayout="@layout/navigation_header"
+ app:menu="@menu/menu_navigation"/>
+
+ <!-- fullScreenVideoFrameLayout is used to display full screen videos. It is initially android:visibility="gone" to hide it from view. -->
+ <FrameLayout
+ android:id="@+id/fullScreenVideoFrameLayout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="gone"
+ android:background="@color/black" />
+</android.support.v4.widget.DrawerLayout>
\ No newline at end of file
You should have received a copy of the GNU General Public License
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-<!-- android:layout_martinTop="?attr/actionBarSize" moves the RelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView. -->
-<!-- the RelativeLayout has an id of adView in the standard flavor so that the ad commands (which do nothing in the standard flavor) don't produce errors. -->
+<!-- android:layout_martinTop="?attr/actionBarSize" moves the RelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView.
+ the RelativeLayout has an id of adView in the standard flavor so that the ad commands (which do nothing in the standard flavor) don't produce errors.
+ android:layout_weight="1" sets the RelativeLayout to fill the rest of the screen because it is encapsulated in a LinearLayout with android:orientation="vertical". -->
<RelativeLayout
android:id="@+id/adView"
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:layout_marginTop="?attr/actionBarSize"
+ android:layout_height="0dp"
+ android:layout_weight="1"
tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
- tools:showIn="@layout/coordinator_layout" >
+ tools:showIn="@layout/main_coordinatorlayout" >
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
- <!-- Google does not currently want to support hiding the AppBar on scroll for a WebView child with the Support Toolbar. https://code.google.com/p/android/issues/detail?id=200394 -->
+ <!-- Google does not currently want to support hiding the AppBar on scroll for a WebView child with the Support Toolbar.
+ https://code.google.com/p/android/issues/detail?id=200394 -->
<WebView
android:id="@+id/mainWebView"
android:layout_width="match_parent"
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
<resources>
-
- <!-- The default actionBarSize is 56dp. 53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge. -->
- <!-- android:windowTranslucentStatus requires API >= 19. It makes the system status bar transparent. -->
- <style name="AppTheme" parent="Theme.AppCompat.Light">
- <item name="colorAccent">@color/blue</item>
+ <!-- The default actionBarSize is 56dp. 53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge.
+ android:windowTranslucentStatus requires API >= 19. It makes the system status bar transparent.
+ When it is specified the root layout should include android:fitsSystemWindows="true". -->
+ <style name="PrivacyBrowser.MainWebView">
<item name="android:actionBarSize">53dp</item>
+ <item name="android:windowTranslucentStatus">true</item>
</style>
- <style name="AppTheme.NoActionBar">
- <item name="windowActionBar">false</item>
- <item name="windowNoTitle">true</item>
+ <!-- android:windowTranslucentStatus requires API >= 19. It makes the system status bar transparent.
+ When it is specified the root layout should include android:fitsSystemWindows="true".
+ colorPrimaryDark goes behind the status bar, which is then darkened by the overlay. -->
+ <style name="PrivacyBrowser.About">
<item name="android:windowTranslucentStatus">true</item>
+ <item name="colorPrimaryDark">@color/blue</item>
</style>
-
- <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
-
- <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
-
</resources>
\ No newline at end of file
<resources>
- <!-- The default actionBarSize is 56dp. 53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge. -->
- <style name="AppTheme" parent="Theme.AppCompat.Light">
+ <style name="PrivacyBrowser" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/blue</item>
+ </style>
+
+ <!-- The default actionBarSize is 56dp. 53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge. -->
+ <style name="PrivacyBrowser.MainWebView">
<item name="android:actionBarSize">53dp</item>
</style>
- <style name="AppTheme.NoActionBar">
- <item name="windowActionBar">false</item>
- <item name="windowNoTitle">true</item>
+ <style name="PrivacyBrowser.About">
+ <item name="colorPrimaryDark">@color/blue</item>
</style>
- <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
+ <!-- colorPrimaryDark is the color of the status bar. -->
+ <style name="PrivacyBrowser.Settings" parent="Theme.AppCompat.Light.DarkActionBar">
+ <item name="colorPrimary">@color/blue</item>
+ <item name="colorPrimaryDark">@color/dark_blue</item>
+ <item name="colorAccent">@color/blue</item>
+ </style>
+
+ <!-- ThemeOverlay.AppCompat.Dark.ActionBar" makes the text and the icons in the AppBar white. -->
+ <style name="PrivacyBrowser.DarkAppBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
+
+ <style name="PrivacyBrowser.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
- <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
+ <style name="PrivacyBrowser.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
\ No newline at end of file
android:entryValues="@array/user_agent_entry_values"
android:defaultValue="Default user agent" />
- <!-- android:inputType="textVisiblePassword" sets the keyboard to have a dedicated number row. -->
- <!-- android:imeOptions="flagNoExtractUi" is not set because with the dedicated number row there often isn't room to see the EditText in landscape orientation. -->
+ <!-- android:inputType="textVisiblePassword" sets the keyboard to have a dedicated number row.
+ android:imeOptions="flagNoExtractUi" is not set because with the dedicated number row there often isn't room to see the EditText in landscape orientation. -->
<EditTextPreference
android:key="custom_user_agent"
android:title="@string/custom_user_agent"
android:entryValues="@array/javascript_disabled_search_entry_values"
android:defaultValue="https://duckduckgo.com/html/?q=" />
- <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box there often isn't enough space to see the EditText in landscape orientation. -->
+ <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box
+ there often isn't enough space to see the EditText in landscape orientation.
+ android:singleLine="true" is not specified because it is the EditTextPreference default. -->
<EditTextPreference
android:key="javascript_disabled_search_custom_url"
android:title="@string/javascript_disabled_search_custom_url"
android:defaultValue=""
- android:inputType="textUri"
- android:singleLine="true" />
+ android:inputType="textUri" />
<ListPreference
android:key="javascript_enabled_search"
android:entryValues="@array/javascript_enabled_search_entry_values"
android:defaultValue="https://duckduckgo.com/?q=" />
- <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box there often isn't enough space to see the EditText in landscape orientation. -->
+ <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box
+ there often isn't enough space to see the EditText in landscape orientation.
+ android:singleLine="true" is not specified because it is the EditTextPreference default. -->
<EditTextPreference
android:key="javascript_enabled_search_custom_url"
android:title="@string/javascript_enabled_search_custom_url"
android:defaultValue=""
- android:inputType="textUri"
- android:singleLine="true" />
+ android:inputType="textUri" />
</PreferenceCategory>
<PreferenceCategory
android:key="general"
android:title="@string/general" >
- <!-- android:imeOptions="flagNoExtractUi" is not set because in special character mode there often isn't enough space to see the EditText in landscape orientation. -->
+ <!-- android:imeOptions="flagNoExtractUi" is not set because in special character mode there often isn't enough space to see the EditText in landscape orientation.
+ android:singleLine="true" is not specified because it is the EditTextPreference default. -->
<EditTextPreference
android:key="homepage"
android:title="@string/homepage_preference"
android:defaultValue="https://www.duckduckgo.com"
- android:inputType="textUri"
- android:singleLine="true" />
+ android:inputType="textUri" />
<SwitchPreference
android:key="swipe_to_refresh_enabled"