Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - jguerinet/Morf: Generates fully customizable forms for an Android app. · GitHub
Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jguerinet/Morf: Generates fully customizable forms for an Android app. · GitHub
Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jguerinet/Morf: Generates fully customizable forms for an Android app. · GitHub
Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - jguerinet/Morf: Generates fully customizable forms for an Android app. · GitHub
Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jguerinet/Morf: Generates fully customizable forms for an Android app. · GitHub
Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jguerinet/Morf: Generates fully customizable forms for an Android app. · GitHub
Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - jguerinet/Morf: Generates fully customizable forms for an Android app. · GitHub
Skip to content

Repository files navigation

Morf

ReleaseCodacy Badge

Summary

Generates customizable forms for Android 21+. Form items include:

  • Simple text
  • Text buttons
  • Standard Android buttons
  • Standard Android borderless buttons
  • Switches
  • Input fields
  • Text input fields
  • Autocomplete text input fields
  • Lines
  • Spaces

Customization includes:

  • Text (color, typeface, size)
  • Background color (can be solid colors, drawables, or a color state list)
  • Input background (For the EditTexts)
  • Icons (location, visibility, color, padding)
  • Padding size
  • Line width and color
  • Space width and color
  • Whether or not lines should be shown after form items
  • Switch on and off text
  • View height and width
  • View visibility

Instructions

To include this in your project, you can add it with Gradle by using JitPack. Replace X.X.X below with the latest version found on the status badge above or on the Releases page:

repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.guerinet:morf:X.X.X'
}

To use this in your project, you can either build an instance of Morf with its custom Shape, customizing anything you might want to change or you can use the default Morf instance by calling Morf.bind(). You can set the default shape by calling Morf.createAndSetShape() if you want to use a customized Morf throughout your app. The default values are:

  • Text Color: Black
  • Text Size: Default Android Text size
  • Text Typeface: Default Android Typeface
  • Background: Transparent
  • Input Background: Default Android background
  • Icon Color: None
  • Padding: Default Android Padding
  • Line Width: 0.5dp
  • Line Color: #EEEEE
  • Space Width: 8dp
  • Space Color: Transparent
  • Lines after items: True

Once you set your default Shape, you can always customize it by calling Morf.shape and changing the desired fields. You can also construct a new instance from your default one by calling Morf.shape.newShape() so that you can start off with your default values, but any changes you make will not change the default instance. Each item can be further customized if you need to have some properties that are different from the default properties. When adding each item, there are a number of methods you can call to further customize the item itself. To get the associated view, simple access view property of the item. All of the above properties can be customized per form item, as well as:

  • Check state for Switches
  • On and off text for Switches (not recommended as the text is poorly rendered on Lollipop-style Switches
  • Setting an OnCheckedChangeListener for Switches
  • Setting an OnClickListener for all form items except the spaces and lines
  • Setting the input type on the EditTexts (default is capitalized sentences)
  • Setting if the EditText should be multi line (default is single line)
  • Adding a TextWatcher to EditTexts
  • Setting icons on all form items except the spaces and lines
  • Showing/hiding the password visibility toggle for the TextInputFormItem

IMPORTANT: All views need to be built by calling build() (apart from spaces and lines). If you do not call build() they will not be added to the container. You can safely call build() multiple times.

Demo

A demo is included within this repo (in the demo folder). The demo shows 2 forms with all of the types of form items: the top one is a Morf with the default Shape, the bottom is a Morf with a customized Shape (changed text color, background selector, line width, line color, icon, and icon color). Below is a screenshot:

Demo Screenshot

Gradle Dependencies

Contributors

Version History

See the Change Log.

Copyright

 Copyright 2015-2019 Julien Guerinet
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Generates fully customizable forms for an Android app.

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages