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

  • 質問

  • 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.

    2020年11月15日 7:59

回答

  • 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
    2020年11月20日 5:52
    モデレータ

すべての返信

  • 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
    2020年11月20日 5:52
    モデレータ
  • 回答を頂きましてありがとうございました。

    記載し忘れていましたが、回避策で提案して頂いていた事は、こちらでも回避策として認識していました。

    現在のところVSではAndroid Studioの様なデザイナーでの即応性がないという事で理解しました。

    マイクロソフトには、初学者にとってチュートリアルが全てなので、今回の事象に関する記載があって欲しいと思いました。

    大変貴重な回答を感謝致します。

    2020年11月21日 16:50