今回は、URLバーをアクションバーの上に表示する・・・。
まず、
Layout resource fileを追加・・・。
menu_urlbarという名前にする・・・。
また、menu_main.xmlで、
このようにする・・・。
app:showAsAction="always"でメニューアイテムはアクションバー上にUIを持って表示される・・・。
app:actionLayout="@layout/menu_urlbar"でそのUIのレイアウトをmenu_urlbarのものにできる・・・。
つまり、カスタマイズができるのである・・・。
menu_urlbar.xmlは、
EditTextで作ったURLバー・・・。
横にタブ切り替えボタンや他のメニューアイテムを表示するためのボタンを表示する関係で、android:layout_marginRight="50dp"や、android:layout_width="270dp"みたいな小細工をしてたりする・・・。
menu_main.xmlの残りは、
タブ切り替えボタンとタブの追加・・・。
タブ切り替えボタンもalwaysにして、android:icon="?attr/actionModeCopyDrawable"でそれっぽく・・・。
(Chromeのタブ切り替えボタン、あれどうやって表示してるんだろ・・・。どのアイコンなんだろ・・・。誰か知ってたら教えて・・・。)
タブの追加は普通のアイテム項目なので、app:showAsAction="never"で・・・。
strings.xmlは、URLバーに表示するヒントや、メニューアイテムの文字列・・・。
(とりあえずヒントだけ・・・。メニューアイテム文字列の方はあとで・・・。)
colors.xmlにblackとgrayを追加・・・。
MainActivity.javaで、
ややこしいが、menuItemUrlBarはMenuItem型でメニューアイテムそのものを表す・・・。
menuUrlBarが、EditText型のURLバー本体・・・。
また、TextView.OnEditorActionListenerをあとで実装する・・・。
Bundle型argsでurlを渡す部分をコメントアウト・・・。
これで起動時にURLがロードされることはなくなる・・・。
onCreateOptionsMenuで、menuItemUrlBarを表示状態に・・・。
そこからviewを取得して、さらにそこからmenuUrlBarを取得・・・。
menuUrlBar.setOnEditorActionListenerでthisを指定・・・。
ということは、ここにonEditorActionを実装しないといけないので、
URLが入力されてリターンキーが押されたら、キーボードを非表示にして、入力されたurlを取得・・・。
前回までに作っておいたMainActivityのloadUrlに渡すことでURLがロードされる・・・。
loadUrlの中では、currentFragmentTagなwebFragmentを探してwebFragment.loadUrlでロード・・・。
起動すると、URLバーがアクションバー上に・・・。
URLを入力して、リターンを押すと、
ロードされる・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc