トップ回答者
【Xamarin】Andoridアプリ作成時のデザインサーフェイスへのウィジェット配置について

質問
-
VS 2019 でXamarinを使いAndoridアプリの作成に挑戦しています。初めての挑戦なので用語の使い方などが間違っているかもしれませんが、質問させていただきます。
マイクロソフトの「Hello, Android:クイックスタート」チュートリアルに従って学習を開始しました。
チュートリアルに従って、デザインサーフェイスにText(large)ウィジェットを配置した後、その下に、プレーンテキストウィジェットを配置すると、プレーンテキストウィジェットがText(Large)ウィジェットに重なって配置されてしまいます。
この状況を回避する方法として、Text(Large)ウィジェットを配置した時点で一度ソリューションを保存して閉じて、再度ソリューションを読み込む、またはソリューションをクリーン後にリビルドすると、チュートリアルのように配置されます。
推察するに、Text(Large)ウィジェットを配置した時点では、@+id/textView1が登録されず、その状態でプレーンテキストを配置すると、andorid:layout_below:@id/textView1が効いていない(参照できない)状態が発生しているように思います。
しかし、その回避方法で、プレーンテキストウィジェットを正常に配置できたとしても、その下に別のウィジェットを配置しようとすると、そのウィジェットは、Text(Large)ウィジェットに重なるように配置されてしまいます。
そのために、今は、RelativeLayoutでウィジェットを配置する度には、「保存->ソリューション閉じる->読み込み」か「クリーン->リビルト」を行っています。
これが仕様なのか、動作不良なのか、動作不良の場合の対処方法などがあれば、ぜひご教授をお願い致します。
【環境】
Win10 Pro 64bit
Microsoft Visual Studio Community 2019
Version 16.8.1
VisualStudio.16.Release/16.8.1+30711.63
Microsoft .NET Framework
Version 4.8.03752
インストールされているバージョン:Community
Azure App Service Tools v3.0.0 16.8.550.19892
Azure App Service Tools v3.0.0
C# ツール 3.8.0-5.20519.18+4c195c3ac1974edcefa76774d7a59a2350ec55fa
IDE で使用する C# コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
Common Azure Tools 1.10
Azure Mobile Services および Microsoft Azure Tools で使用する共通サービスを提供します。
Extensibility Message Bus 1.2.6 (master@34d6af2)
Provides common messaging-based MEF services for loosely coupled Visual Studio extension components communication and integration.
IntelliCode 拡張機能 1.0
IntelliCode Visual Studio 拡張機能の詳細情報
Microsoft JVM Debugger 1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
Microsoft MI-Based Debugger 1.0
Provides support for connecting Visual Studio to MI compatible debuggers
Mono Debugging for Visual Studio 16.8.43 (00471f8)
Support for debugging Mono processes with Visual Studio.
NuGet パッケージ マネージャー 5.8.0
Visual Studio 内の NuGet パッケージ マネージャー。NuGet の詳細については、https://docs.nuget.org/ にアクセスしてください
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
Visual Basic ツール 3.8.0-5.20519.18+4c195c3ac1974edcefa76774d7a59a2350ec55fa
IDE で使用する Visual Basic コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
Visual F# Tools 16.8.0-beta.20507.4+da6be68280c89131cdba2045525b80890401defd
Microsoft Visual F# Tools
Visual Studio Code デバッグ アダプターのホスト パッケージ 1.0
Visual Studio Code デバッグ アダプターを Visual Studio でホストするための相互運用レイヤー
VisualStudio.DeviceLog 1.0
パッケージに関する情報
VisualStudio.Foo 1.0
Information about my package
VisualStudio.Mac 1.0
Mac Extension for Visual Studio
Xamarin 16.8.000.255 (d16-8@d002176)
Xamarin.iOS と Xamarin.Android の開発を有効にする Visual Studio 拡張機能
Xamarin Designer 16.8.0.507 (remotes/origin/d16-8@e87b24884)
Visual Studio で Xamarin Designer ツールを有効にするための Visual Studio 拡張機能。
Xamarin Templates 16.8.112 (86385a3)
Templates for building iOS, Android, and Windows apps with Xamarin and Xamarin.Forms.
Xamarin.Android SDK 11.1.0.17 (d16-8/c0e2b8e)
Xamarin.Android Reference Assemblies and MSBuild support.
Mono: be2226b
Java.Interop: xamarin/java.interop/d16-8@79d9533
ProGuard: Guardsquare/proguard/proguard6.2.2@ebe9000
SQLite: xamarin/sqlite/3.32.1@1a3276b
Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-8@2fb1cbc
Xamarin.iOS and Xamarin.Mac SDK 14.4.1.3 (e30c41de3)
Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support.
回答
-
kanonppさん、こんにちは。フォーラムオペレーターのKumoです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
まずは、@id と @ + idは違いがあります。
文字列の先頭にあるアットマーク(@)は、XMLパーサーが残りのID文字列を解析および展開し、それをIDリソースとして識別する必要があることを示します。
プラス記号(+)は、これが新しいリソース名であり、作成してリソースに追加する必要があることを意味します(R.javaファイル内)。
Androidフレームワークによって提供される他のIDリソースがいくつかあります。
AndroidリソースIDを参照する場合、プラス記号は必要ありませんが、Androidパッケージの名前空間を追加する必要があります。
次は、コードについては、問題なさそうですが、VSはAndroid Studioほど完璧ではないようです。Android Studioは同期にタイムリーに応答できます。
そのため、@+idを使用してコントロールIDを宣言すると、すぐに登録されないため、@+idを使用した次の参照を正確に見つけることができません。
回避策としては、android: layout_below: @+ id/textView1を使用することをお勧めします。
どうぞよろしくお願いいたします。MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~
- 回答としてマーク kanonpp 2020年11月21日 16:45
すべての返信
-
kanonppさん、こんにちは。フォーラムオペレーターのKumoです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
まずは、@id と @ + idは違いがあります。
文字列の先頭にあるアットマーク(@)は、XMLパーサーが残りのID文字列を解析および展開し、それをIDリソースとして識別する必要があることを示します。
プラス記号(+)は、これが新しいリソース名であり、作成してリソースに追加する必要があることを意味します(R.javaファイル内)。
Androidフレームワークによって提供される他のIDリソースがいくつかあります。
AndroidリソースIDを参照する場合、プラス記号は必要ありませんが、Androidパッケージの名前空間を追加する必要があります。
次は、コードについては、問題なさそうですが、VSはAndroid Studioほど完璧ではないようです。Android Studioは同期にタイムリーに応答できます。
そのため、@+idを使用してコントロールIDを宣言すると、すぐに登録されないため、@+idを使用した次の参照を正確に見つけることができません。
回避策としては、android: layout_below: @+ id/textView1を使用することをお勧めします。
どうぞよろしくお願いいたします。MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~
- 回答としてマーク kanonpp 2020年11月21日 16:45