@poopoo

Тег Android в блоге poopoo

poopoo

Як для TabWidget зробити розділювальні лінії між вкладками. З якоїсь версії Android ідіоти з Google вирішили що розділювальна лінія між вкладками не потрібна і тому тепер, для того щоб її все таки показати, доводиться трахати собі мозок.

Після створення обʼєкту TabHost і до задання вмісту вкладок, тому що, як пишуть в Internet, якщо не дотримуватися саме цієї послідовності програма може впасти, пишемо код

tabHost.getTabWidget().setDividerDrawable(R.drawable.tabs_divider);

Після чого в директорії drawable створюємо файл tabs_divider.xml з отаким вмістом:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <size android:width="1px"/>
    <solid android:drawable="?android:attr/listDivider"/>
</shape>

І отримуємо вертикальну розділювальну лінію. Щодо знака питання перед android, то я підказує нам Stackoverflow «Prefixing the ID with a question mark indicates that you want to access a style attribute that's defined in a style theme, rather than hard-coding the attribute. See "Referencing Style Attributes" here: accessing-resources http://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributes».

poopoo

Щойно зʼясував що для API 14+ тема задається через файлик (styles.xml) в директорії res/values-14 а не в res/values. На розумному телефоні з Android 5 прописування parent="android:Theme.Holo" в елементі style з атрибутом name="AppBaseTheme" в файлі res/values/styles.xml ні на що не впливає.

poopoo

A Single-Activity Android Application. Why not?! https://medium.com/rosberry...why-not-fa2a5458a099

Судячи по замірам автора програма на активностях замість фрагментів менше навантажує ЦП, менш енергозатратна та займає менше RAM.

poopoo

Не можна просто взяти і запустити активність всередині вкладки TabHost та так щоб те що знаходиться в цій активності не перекривало весь екран і можна було повернутися до попередньої активності всередині TabHost. Виявляється, що для того щоб мати декілька активностей в одній вкладці TabHost і мати можливість переміщатися між ними потрібно використовувати ActivityGroup і самому за всім слідкувати. Ситуація майже така сама якби в web-переглядачі не було історії перегляду і вебщикам доводилося б її реалізовувати. Дивно, але не можу знайти нічого толкового по цій темі окрім парочки текстів та запитань на StackOverflow; і код з цих двох текстів толком не працює.

http://ericharlow.blogspot....roid-activities.html
http://web.archive.org/web/...y-nested-activities/
https://www.google.com/sear...hAP&biw=1600&bih=759 https://www.google.com/search?q=android+activity+group+tutorial+site:stackoverflow.com&amp;client=firefox-b-e&amp;sa=X&amp;ved=2ahUKEwix4aOH07_pAhUCjosKHUQ5C6YQrQIoBDABegQIAhAP&amp;biw=1600&amp;bih=759

poopoo

The early implementations of fragments were riddled with bugs.

Якщо воно недороблене, то нахуя таке випускати і псувати життя програмістам?

As of Android 9.0, the framework implementation of fragments is officially deprecated. Google is now very aggressively steering you to use the Support Library implementation of fragments, and this book will tend to focus on that.

Просто охуєнно.

poopoo

А ще в назвах файлів заборонено символ - і хто його знає які ще.

poopoo

Каталоги /res/drawable, /res/layout не можуть мати підкаталогів. В /res/layout в мене вже з десяток файликів а в /res/drawable я по підкаталогам розсортував декілька десятків картинок. На Stackoverflow знайшов інформацію що підкаталоги ніби як підтримуються Android studio в звʼзці з Gradle.

poopoo

Програма не запускається. Пише про NullPointerException. Рядок коду де це сталося не вказується. Просто охуєнно.

poopoo

Концепція Activity в Android підозріло нагадує роботу переглядача WWW.

poopoo

Починаючи з якоїсь версії Android (4? 5?) TabWidget (вкладки) показує піктограми лише якщо вкладка не має підпису або змінна що містить підпис дорівнює null. Показу піктограми одночасно з підписом можна досягти скориставшись варіантом методу setIndicator який в якості аргументу приймає обʼєкт типу View. Спершу в файлі описується те з яких компонентів буде складатися вкладка, наприклад, відцентрований над TextView ImageView з картинкою, потім з розмітки в файлі створюється шматочок UI, поміщається в екземпляр класу View і передається методу setIndicator. Але! Але Android перестає відмічати вибрану вкладку і те що вкладка натиснена, але ще не вибрана. Закінчилось все тим що я знайшов Custom Android Tabs.

  • Для кожної вкладки в якості фону вказується файлик з XML який описує обʼєкт типу StateListDrawable і який буде змінювати фон в залежності від стану вкладки.
  • Створюються ще XML файли в якийх описуються обʼєкти які будуть використовуватися як фон і на які є посилання в попередньому файлику.

Кому в Google так не догодили вкладки з текстом і картинками що мені тепер доводиться так страждати через отаку хуйню я не знаю, але це просто срань якась. Автор статті пише що Google ще й розділювачі між вкладками прибрав. До речі, вищі та ширші вкладки хоч і займають зайве місце, проте зручнші і краще виглядають, а зміна фону і імітація натисненою клавіші це набагато краще ніж індикатор у вигляді тонкої смужки під поточною вкладкою.

poopoo

Eclipse не могло зібрати проект з повідомленням

Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!

Допомогло видалення заміна встановленої версії Android SDK build tools на 25.
https://stackoverflow.com/q...ed-from-the-sdk-fold

poopoo

Бля-я-я-ять. SVG в Android підтримується починаючи з версії 5.0 (API 21). Для використання SVG в більш ранніх версіях потрібно тягнути в програму бібліотеку appcompat.

https://blog.mindorks.com/u...drawables-in-android
https://www.rswebsols.com/t...-with-android-or-not

poopoo

Програмка з вкладками (Tabhost) створена в B4A займає 832 Кб. Якщо в редакторі AndroidManifest прибрати встановлення теми (CreateResourceFromFile(Macro, Themes.DarkTheme)), то ще й використовується тема обрана в ОС. Але не можна розмістити вкладки внизу екрана навіть з бібліотекою TabHostExtras і B4A не підтримує SVG. Для SVG пропонується використовувати якусь бібліотечку яка майже нічого не вміє.

poopoo

Програма в якій крім TabHost і трьох невеликих SVG картинок нічого немає займає 10, блять, Мб. Пошукавши в Internet, вирішив поззбутися бібліотек сумісності видаливши з файлу build.gradle рядки

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

всі impot`и constraintlayout. Також задав API 15 для compileSdkVersion і minSdkVersion і тепер воно не запускається бо

ic_history_white_24dp.xml:1: AAPT: error: attribute android:viewportHeight not found.

Почему мобильные приложения занимают все больше места https://habr.com/ru/post/332602/

poopoo

Якщо в редакторі Android studio виділити якесь слово (наприклад тип) і натиснути F1, то замість довідки по виделеній сутності запуститься web-переглядач з сторінкою на якій розказується як встановити IntelliJ IDEA https://www.jetbrains.com/h...allation-guide.html#

poopoo

Android studio повідомляє про «missing classes»:
The following classes could not be found: TabH
Де? Де ти найшло такий клас? Звідки воно пропало і де використовується? Не існує такого класу!

А ще мені подоюається

One or more layouts are missing the layout_width or layout_height attributes. These are required in most layouts.

Третій проект створюю, правлю XML файл і воно мені пише таку хуйню. Є навіть кнопка для того щоб автоматично додати потрібні атрибути, але вона не натискається.

poopoo

В Android компонент Spinner це, як не дивно, випадаючий список.

Spinners provide a quick way to select one value from a set. In the default state, a spinner shows its currently selected value. Touching the spinner displays a dropdown menu with all other available values, from which the user can select a new one.

poopoo

Android studio повідомляє що - Currently available disk space in SDK root (C:\Users\user\AppData\Local\Android\Sdk): 0 B, але насправді є ще 20 гігів.

poopoo

«The Busy Coder's Guide to Android Development» від Mark L. Murphy налічує 4236 сторінок і перші 123 про Android studio, Gradle і проекти в Android studio.

poopoo

VB6 throws an exception for division by 0. B4A returns either 2147483647 or Infinity, depending whether the result is set to an integer or a string.

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.