- 投稿日:2020-10-14T22:56:44+09:00
DatePickerをスピナー指定してもカレンダー部分が消えない(Tablet端末のみ?)
前提
- エミュレータおよび実機で検証 (API 28以降)
- htmlをWebViewで表示(Chrome for android)
- DatePickerをスピナーのみの表示にしたかった
- 結果的にスピナーのみの表示をあきらめています
input type="date"の表示
まずはデフォルト設定
Pixel 3a XLの場合
Nexus 10 の場合
デフォルト表示だとスマートフォンでもタブレットでも同様の表示次にスピナーのみ表示する設定
<item name="android:datePickerMode">spinner</item> <item name="android:calendarViewShown">false</item>Pixel 3a XLの場合
Nexus10の場合
何が起きているのか
本来右の空間にはカレンダーが表示されるが、カレンダーを非表示にしたために
このような空間が生まれてしまったと思われる。
おわりに
泣く泣くDatePickerの使用をやめ、生年月日をリストで選択してもらうようにしました・・・
- 投稿日:2020-10-14T16:03:38+09:00
Android: Wifiで開発、デバッグのメモ
- Android Studio 4.0.1
- Windows 10
Androidアプリの開発にて、Android端末と別の機器をUSBで接続して使う仕様でしたので、WiFi経由で実行、デバッグ、ログ出力をしました。
手順だけのメモとなります。
詳細は、参考にさせて頂いたこちらの記事をご参照ください。
AndroidアプリをWiFi経由でデバッグ
[Android]adbコマンドでunauthorizedが表示されるAndroid-PCをUSBケーブルで接続
[PC] Android Studioは立ち上げておく
[Android]開発者向けオプションをON, USBデバッグをON
[PC] AndroidのIPアドレスを調べる
powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe shell ip addr実行結果5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 34:97:f6:7a:83:a8 brd ff:ff:ff:ff:ff:ff inet 192.168.1.124/24 brd 192.168.1.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 fe80::3697:f6ff:fe7a:83a8/64 scope link valid_lft forever preferred_lft forever[PC] TCP/IPデバッグに切り替え
powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe tcpip 5555ケーブルを抜く
[PC] TCP/IPで接続する
powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe connect 192.168.1.124:5555[PC] 確認
powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe devices実行結果192.168.1.124:5555 deviceうまくいかない場合
[Android]開発者向けオプションをOFF→ON, USBデバッグをOFF→ON
[PC] 終わるときは、USBデバッグに戻しておく
powershell -Command $env:USERPROFILE\AppData\Local\Android\sdk\platform-tools\adb.exe usb
- 投稿日:2020-10-14T16:00:28+09:00
AndroidのListViewに文字が表示されないとお怒りのあなたへ(<ーー私のこと)==>ArrayAdapterの使い方
1.きっかけ
斎藤新三著『Androidアプリ開発の教書(Kotlin版)初版第2刷』のp109の「アクティビティ中のリストデータを生成する、ListViewSample2]を写経していた際、ListViewに文字が表示されない(正確には、表示されているが、バックグラウンドと(ほぼ)同色で見えない)事象を発見したので報告します。この事象はリストデータをstring.xmlに持つやり方では起こりませんでした。また確認した範囲では、エミュレータがAPIレベル24以上のときにはこの事象は起こりませんでした。
どうでしょう?罫線と罫線の間にうっすらと文字が表示されているのが見えますか?(上の写真はAPIレベル19のもの)
次の写真はAPIレベル30のものです。本当ならこのように表示されるよう期待していました。
2.ソースコード
2.1 レイアウトファイル
<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lvMenu" android:layout_height="match_parent" android:layout_width="match_parent"/>2.2 MainActivity.kt
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //ListViewオブジェクトを取得 val lvMenu = findViewById<ListView>(R.id.lvMenu) // リストビューに表示するリストデータを作成 var menuList = mutableListOf("A", "B", "C") //アダプタオブジェクトを生成する val adapter = ArrayAdapter( applicationContext, android.R.layout.simple_list_item_1, menuList) //リストビューにアダプタオブジェクトを設定 lvMenu.adapter = adapter } }3.現象
少し現象を調べたところ、OS(APIレベル)の違いで文字が(黒色で)表示できたりできなかったりするようです。
3.1 実機
名称 OSバージョン 文字可読の可否
Huawei G628-TL Android4.4.4 不可
Huawei Nova Android7.0 可
(CAZ-TL10)3.2 エミュレータ
名称 APIレベル 文字可読の可否
Nexus4 19 不可
Nexus One 19 不可
Nexus 5X 21 不可
Nexus 5X 23 不可
Nexus 5X 24 可
Nexus 5X 27 可
Nexus 5X 28 可
Nexus 5X 29 可
Pixel3 30 可4.原因
エンジニアならばもっと深堀して原因を探るべきでしょうが、初心者なので先を急がさせてください。
5.対策
コメント欄のgaeさんのご教示により、正しい対策方法が見つかりましたので、それを記述します。(以前記述していた対処方法はこの項の下部に見え消し状態で残しておきます。)
ArrayAdapterの第一引数をapplicationContextからthisに変更したところ、思い通りに表示するようになりました。//アダプタオブジェクトを生成する val adapter = ArrayAdapter( this, // 変更点 android.R.layout.simple_list_item_1, menuList)また、AndroidApiのArrayAdapterのリファレンスには、次のように記述されています。
ArrayAdapter
public ArrayAdapter (Context context, int resource, T[] objects)
Constructor.
Parameters
context Context: The current context. This value cannot be null.
resource int: The resource ID for a layout file containing a TextView to use when instantiating views.
objects T: The objects to represent in the ListView. This value cannot be null.リファレンスに第1引数がThe current context(現在のコンテキスト)と書かれているので、gaeさんが言うアクティビティーのインスタンスとは、“this”のことだと判断しました。(またAndroidアプリ開発AndroidStudio3.0対応java版を読み返したところ、第1引数はthisになっていました。それではapplicationContextとは何者ぞ?と疑問が涌いてサクッと調べたら、「ApplicationContext派とActivityContext派の主張」などと言った具合に、難しい話のようなので頭の片隅に残し、今後の課題とします。)
これで、思い通り表示されました。(実機Huawei G628-TL及びエミュレータAPIレベル19、21、23で確認済)
(以下、対策が見つかる以前に記述していた対処方法を参考と履歴のために残しておきます。)
#5.対処方法
バックグラウンドと文字の色を指定することにより表示が見えるようにしました。
本来ならば、MainActivity.ktの中に記述できると思いますが、その方法が見つからなかった(解決できなかった)ので、この方法でお茶を濁します。
ただ、ひとつ気になるのが、色の指定がうまくできないことです。backgroundで指定した#000fffは青に近い色でまあまあ正しく表示しているのですが、文字の色を指定するtextColorの#f00000は赤に近い色のはずですが、表示上”白”で表示されます(どの色を指定しても白で表示されます)。今後MainActivityの中で文字の色指定する方法が見つかれば、きっと解決できると思います。
xml
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lvMenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/lv_menu"
android:background="#000fff"
android:textColor="#f00000"
/>
6.今後検討すべきこと
(1)今後MainActivityの中で文字の色指定する方法が見つける
(2)今回はArrayAdapterでこの現象が起きたが、SimpleAdapterやSimpleCursorAdapterでこの現象が起きるか
-->SimpleAdapterでも同様の現象が起きました(2020/10/15追記)。
(3)ApplicationContextとActivityContextとthisの違い7.参考
nyan のアプリ開発 Android & Kotlin ListView と ArrayAdapter 簡単なテキストリストの表示
8.動作環境
Android Studio 4.1
Build #AI-201.8743.12.41.6858069, built on September 24, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 1237M
Cores: 8
Registry: ide.new.welcome.screen.force=true
Non-Bundled Plugins: com.thoughtworks.gauge
- 投稿日:2020-10-14T16:00:28+09:00
AndroidのListViewに文字が表示されないとお怒りのあなたへ(<ーー私のこと)
1.きっかけ
斎藤新三著『Androidアプリ開発の教書(Kotlin版)』のp109の「アクティビティ中のリストデータを生成する、ListViewSample2]を写経していた際、ListViewに文字が表示されない(正確には、表示されているが、バックグラウンドと(ほぼ)同色で見えない)事象を発見したので報告します。この事象はリストデータをstring.xmlに持つやり方では起こりませんでした。また確認した範囲では、エミュレータがAPIレベル24以上のときにはこの事象は起こりませんでした。
どうでしょう?罫線と罫線の間にうっすらと文字が表示されているのが見えますか?(上の写真はAPIレベル19のもの)
次の写真はAPIレベル30のものです。本当ならこのように表示されるよう期待していました。
2.ソースコード
2.1 レイアウトファイル
<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lvMenu" android:layout_height="match_parent" android:layout_width="match_parent"/>2.2 MainActivity.kt
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //ListViewオブジェクトを取得 val lvMenu = findViewById<ListView>(R.id.lvMenu) // リストビューに表示するリストデータを作成 var menuList = mutableListOf("A", "B", "C") //アダプタオブジェクトを生成する val adapter = ArrayAdapter(applicationContext, android.R.layout.simple_list_item_1, menuList) //リストビューにアダプタオブジェクトを設定 lvMenu.adapter = adapter } }3.現象
少し現象を調べたところ、OS(APIレベル)の違いで文字が(黒色で)表示できたりできなかったりするようです。
3.1 実機
名称 OSバージョン 文字可読の可否
Huawei G628-TL Android4.4.4 不可
Huawei Nova Android7.0 可
(CAZ-TL10)3.2 エミュレータ
名称 APIレベル 文字可読の可否
Nexus4 19 不可
Nexus One 19 不可
Nexus 5X 21 不可
Nexus 5X 23 不可
Nexus 5X 24 可
Nexus 5X 27 可
Nexus 5X 28 可
Nexus 5X 29 可
Pixel3 30 可4.原因
エンジニアならばもっと深堀して原因を探るべきでしょうが、初心者なので先を急がさせてください。
5.対策
コメント欄のgaeさんのご教示により、正しい対処方法が見つかりましたので、それを記述します。
ArrayAdapterの第一引数をapplicationContextからthisに変更したところ、思い通りに表示するようになりました。//アダプタオブジェクトを生成する val adapter = ArrayAdapter( this, // 変更点 android.R.layout.simple_list_item_1, menuList)また、AndroidApiのArrayAdapterのリファレンスには、次のように記述されています。
ArrayAdapter
public ArrayAdapter (Context context, int resource, T[] objects)
Constructor.
Parameters
context Context: The current context. This value cannot be null.
resource int: The resource ID for a layout file containing a TextView to use when instantiating views.
objects T: The objects to represent in the ListView. This value cannot be null.リファレンスに第1引数がThe current context(現在のコンテキスト)と書かれているので、gaeさんが言うアクティビティーのインスタンスとは、“this”のことだと判断しました。
(以下、対策が見つかる以前に記述していた対処方法を参考と履歴のために残しておきます。)
#5.対処方法
バックグラウンドと文字の色を指定することにより表示が見えるようにしました。
本来ならば、MainActivity.ktの中に記述できると思いますが、その方法が見つからなかった(解決できなかった)ので、この方法でお茶を濁します。
ただ、ひとつ気になるのが、色の指定がうまくできないことです。backgroundで指定した#000fffは青に近い色でまあまあ正しく表示しているのですが、文字の色を指定するtextColorの#f00000は赤に近い色のはずですが、表示上”白”で表示されます(どの色を指定しても白で表示されます)。今後MainActivityの中で文字の色指定する方法が見つかれば、きっと解決できると思います。
xml
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lvMenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/lv_menu"
android:background="#000fff"
android:textColor="#f00000"
/>
6.今後検討すべきこと
(1)今後MainActivityの中で文字の色指定する方法が見つける
(2)今回はArrayAdapterでこの現象が起きたが、SimpleAdapterやSimpleCursorAdapterでこの現象が起きるか7.参考
nyan のアプリ開発 Android & Kotlin ListView と ArrayAdapter 簡単なテキストリストの表示
- 投稿日:2020-10-14T12:05:00+09:00
Androidアプリの申請。最初のリリース。「製品版としての公開を開始」ボタン押下でどうなる?
即公開 or 審査??
製品版をリリースする時に、必要な情報や、AppBundle or APKを用意すると最終的に以下の画面となります。「製品版としての公開を開始」ボタンを押すと、審査が入るのか、それとも即公開となるのかが気になりました。
実に、2年ぶりくらいのアプリ公開で、審査がApple並になってるとの事、プロモーションやマーケティングなどと並行する場合はタイミングが大事となりますので、実際にどうだったか簡単に載せます。※リリースのレビュー → 製品版としての公開のようになります
1.リリースのレビューがある画面
リリースのレビューボタンを押下します
2.公開直前の画面となります。
製品版としての公開を開始ボタンがあります
製品版としての公開を開始ボタンを押下します
3.製品版としての公開を開始ボタンを押下すると…
審査中になります。即公開ではありませんので、気をつけましょう!
審査が24〜48時間くらいかかりまして、いつの間にか公開されていました。
iOSやiPadアプリと異なり、審査後に手動公開の様な方法は取れないようです。