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

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

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

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

Q&A

解決済

2回答

13389閲覧

Android Viewの重なり順を変更したい

san11

総合スコア14

Android

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

0グッド

0クリップ

投稿2017/09/12 06:57

Android StudioにてCrossWalk(WebView)を使ってタブブラウザのようなものを作成しております。
FrameLayoutの中にWebViewを複数追加しておりますが、重なり順が変更されず困っております。

下記にActivityのレイアウトを記載させて頂きます。

XML

1<?xml version="1.0" encoding="utf-8"?> 2<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="MainActivity"> 8 9 <FrameLayout 10 android:id="@+id/frame" 11 android:layout_width="0dp" 12 android:layout_height="0dp" 13 app:layout_constraintBottom_toBottomOf="parent" 14 app:layout_constraintLeft_toLeftOf="parent" 15 app:layout_constraintRight_toRightOf="parent" 16 app:layout_constraintTop_toTopOf="parent"> 17 18 <org.xwalk.core.XWalkView 19 android:id="@+id/wkLayer1" 20 android:layout_width="match_parent" 21 android:layout_height="match_parent" /> 22 23 <org.xwalk.core.XWalkView 24 android:id="@+id/wkLayer2" 25 android:layout_width="match_parent" 26 android:layout_height="match_parent" /> 27 28 </FrameLayout> 29 30</android.support.constraint.ConstraintLayout>

この後にコードにてz-indexの変更を行っております。

Java

1 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 2 wkLayer1.setTranslationZ(1); 3 wkLayer1.setElevation(1.0f); 4 } 5 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 6 wkLayer2.setTranslationZ(2); 7 wkLayer2.setElevation(2.0f); 8 } 9 10 //切替の際下記コードを呼んでみても変わりませんでした。 11 wkLayer2.bringToFront(); 12 frame.requestLayout(); 13 frame.invalidate();

こちらのコードを実行するとwkLayer2が前面に表示されると思うのですが、wkLayer1が表示されてしまいます。

デバッグ環境
Android Studio 2.3.3
シミュレーター Nexus 5X API19 API 21 API 24(全てのバージョンで駄目でした)
何故かAndroid 4.2.2 API17の実機では意図したとおりに動いています。

何か解決方法や良い方法をご存じの方いらっしゃいませんでしょうか。
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

XWalkViewはSurfaceViewを継承していたと思います。
SurfaceViewは質問に書いてある方法では並び変えはできません。
調べてみましたが、途中から順番を変える方法はなさそうですね。

投稿2017/09/12 17:49

yona

総合スコア18155

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

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

san11

2017/09/13 00:18

頂いたヒントを元に調べてみたところ、XWalkViewをTextureViewを使ってレンダリングするオプションがありました。 こちらを使ってみたところ意図通りの動作が出来ました。(解決方法に手順を記載させて頂きます。) ご回答頂きましてありがとうございます。
guest

0

XWalkViewはデフォルトでSurfaceViewを継承していますがこちらはオーバーレイ表示に対応していません。
TextureViewに切り替えるとオーバーレイ表示が可能となります。

下記サイトの手順にてTextureViewに切り替えることができます。
手順1はDeprecatedになっているため、手順2の方で設定して下さい。

CrossWalk公式ドキュメント

投稿2017/09/13 00:22

san11

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問