[解決済み] Intellij IDEA/Android Studioでマージルートタグを使用したレイアウトをプレビューする
2022-04-22 23:31:59
質問
LinearLayoutをベースとした複合コンポーネントを開発する場合を考えてみましょう。そこで、以下のようなクラスを作成します。
public class SomeView extends LinearLayout {
public SomeView(Context context, AttributeSet attrs) {
super(context, attrs);
setOrientation(LinearLayout.VERTICAL);
View.inflate(context, R.layout.somelayout, this);
}
}
もし
LinearLayout
のルートとして
somelayout.xml
の場合、ビューレベルが追加されるので、マージタグを使用します。
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some other text"/>
</merge>
しかし、IDE の Preview タブでは merge は常に FrameLayout として動作し、このようなものが表示されます。
(これはAndroid Studioで、Intellij IDEAも同じです。)
プレビューはレイアウトの開発速度を大幅に向上させるので、一部のレイアウトでもこのような大きな手助けがなくなるのは悲しいことです。プレビューがどのように解釈されるかを指定する方法があるかもしれません。
merge
タグを特定のレイアウトで使用できますか?
どのように解決するのですか?
新しい parentTag ツール属性 ( Android Studio 2.2 で追加された を使用すると、レイアウトエディタのプレビューでレイアウトが正しく表示されるようになります。
では、あなたの例で言うと
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:parentTag="LinearLayout"
tools:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text"
android:textSize="20sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some other text"/>
</merge>
備考
: 両方
android:layout_width
と
android:layout_height
は、エディタでレイアウトが正しく表示されるように指定する必要があります。
関連
-
[解決済み] Android Studioのレイアウトプレビューはどこにありますか?
-
Android.mk:7: *** セパレータがありません。
-
Android: インポートモジュールエラー Android リソースのリンクに失敗しました
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定
-
[解決済み】Android StudioのエディターでRecyclerViewの内容をプレビュー表示する方法はありますか?
-
[解決済み】Androidアプリケーション用のIntelliJ IDEAをセットアップする方法を教えてください。
-
[解決済み】IntelliJ IDEAでgitを使用する。リモートリポジトリから読み取れませんでした
-
[解決済み] Android Studio (IntelliJ Idea)でクラス図(UML)を作成する方法
-
[解決済み] Android StudioとIntelliJ IDEAのプラグインの違いとは?
-
[解決済み] Android Studioを使用しています。Android Manifestが存在しない、または不正なルートタグがある
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
android E/RecyclerView﹕ アダプタが接続されていないため、レイアウトをスキップする。
-
AndroidがMainActivityが包含クラスでないというエラーを報告する
-
ArrayAdapter は、リソース ID が TextView であることが必要です。
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
アプリケーションがメインスレッドで過剰に作業している可能性があります。
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
Android Get set image.setImageResource(R.drawable.xxx) リソース
-
AndroidStudioのショートカット 検索/置換
-
Android.support.v7.widget.Toolbar が見つかりませんでした。