質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1476閲覧

Webviewを使ったAndroidアプリで、HTMLのselectタグの動作がOSバージョン毎に違うので同じ動作にしたい

myumyu

総合スコア6

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/03/07 06:11

編集2018/03/08 01:46

前提・実現したいこと

Android OS5.0以上を対象としたアプリをWebviewで作っているのですが、OS5.0と、OS5.1以上のエミュレータ上で動作の違いがあり、原因の特定すらできず困っているので、こちらに質問させていただきます。
2つほど質問したい内容があります。

・1点目
selectタグのoptionが1つしかないとき、optionにdisabledとdisplay:none;を指定し、先頭を選択できないようにしているのですが、OS5.0のエミュレータでは選択できる状態になってしまいます。(リストのポップアップ?が表示される。)
OS5.1以上のエミュレータ(Webview)ではこのような現象が発生せず、原因がわからず行き詰りました。
OSの問題なのか、Webviewの問題なのか、どこに問題があるのかも切り分けができず困っています。
ここでは、OS5.1以上のエミュレータに合わせて、OS5.0のエミュレータでも選択できないようにさせたいです。

HTML

1<label for="sample" class="select"> 2 <select name="sample" id="sample"> 3 <option value="" disabled selected style="display: none;">プレースホルダー</option> 4 </select> 5</label>

・2点目
selectタグにoptionが2つ以上あるとき、1行目のoptionを選択項目から非表示とさせたいが、OS5.0のエミュレータでは選択項目として残ってしまう。(1行目のoptionにはdisplay:none;を指定しています。)
OS5.1以上のエミュレータでは、セレクトボックスを選択してもリスト選択ポップアップが表示されることはありません。
ここでは、OS5.1以上のエミュレータに合わせて、OS5.0のエミュレータでも先頭行をリストに表示させないようにしたいです。
※先頭行に残している理由は、プレースホルダーみたいな役割を持たせるために残しています。

HTML

1<label for="sample" class="select"> 2 <select name="sample" id="sample"> 3 <option value="" style="display: none;">プレースホルダー</option> 4 <option value="data1">データ1</option> 5 <option value="data2">データ2</option> 6 </select> 7</label>

補足情報(selectタグ(リスト)の仕様)

  • optionが1つ(プレースホルダーのみ)の場合は選択不可(非活性)
  • optionが2つ以上(プレースホルダー+選択用のデータ)の場合は、選択可能としてリストからプレースホルダー以外を選択できるようにする。(プレースホルダーのoptionはリストからは非表示)

上記を実現しようと考えて実装した結果、本現象が発生してしまいました。

補足情報(FW/ツールのバージョンなど)

■開発環境
Android Studio 3.0.1
■エミュレータ
Nexus5を使い以下で確認
Lollipop API21 x86, API22 x86
Marshmallow API23 x86
Nougat API24 x86, API25 x86

実機は5.1以上は持っており、5.0は持っていません。
5.1以上の実機は期待通りの動作をしています。

以下のサイトからchromeのhtmlやcssの対応状況を調べてみましたが、そもそも何が原因かわかっていないため、原因を特定するまでには至りませんでした。
https://www.chromestatus.com/features
https://caniuse.com/
https://bestvpn.org/whats-my-ip/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2018/03/07 09:12

selectのoptionを隠すとか必要性があるのでしょうか?しかもoptionが一つもないとかは必ず1つ以上selectedされる原則から考えてもちょっとあり得ない仕様だと思います。もっと別の仕様を検討するか、最悪optionを削除するかのどちらかではないでしょうか?(それも正しくはないでしょうけど)
myumyu

2018/03/08 01:26 編集

selectでプレースホルダーを表示させたいがために、先頭のoptionを隠す対応を取りました。 optionを隠す以外の方法でプレースホルダーを実現できればよいのですが、その手段を見つけることができなかったのでこのようなことをしています。 このselectタグ(リスト)の仕様としては、データが1件(プレースホルダー用に設定したoption)のとき非は活性として、2件以上のときは選択は可能ですがプレースホルダー用に設定したoptionは選択候補に含ませたくないというのがあります。
guest

回答1

0

自己解決

完全な解決には至っていませんが、実機(5.0)で確認したところ、やりたいことは実現できていました。
そのためエミュレータに挙動の違いが出来る原因があったものとして解決といたします。

投稿2018/06/13 06:08

myumyu

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問