5

Ich habe eine MonoDroid-Anwendung und möchte alle meine Aktivitäten zwingen, nur im Hochformat angezeigt zu werden.Mono für Android - Alle Aktivitäten in der Hochformat-Ausrichtung

Ich würde allerdings eine eine Aktivität Basis classe wie über das Erstellen von:

[Activity (ScreenOrientation = ScreenOrientation.Portrait)]   
public abstract class BaseActivity : Activity 
{ 
} 

Alle anderen Aktivitäten in meiner Anwendung sollen dann erben von ihm (Vermeidung von Wiederholungen und haben einen zentralen Platz für die Definition der ScreenOrientation = ScreenOrientation.Portrait) .

Wenn Sie jedoch die ActivityAttribute-Definition betrachten, sieht es so aus, als ob es Vererbung nicht unterstützt.

[Serializable] 
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] 
public sealed class ActivityAttribute : Attribute { ... } 
  1. Muss ich die Activity (ScreenOrientation = ScreenOrientation.Portrait) in allen Aktivitäten meiner Anwendung setzen?
  2. Ist es eine schlechte Idee, nur die Ausrichtung von Hochformat in der Android-Welt zu unterstützen? (Ich habe eine Portrait-only-iOS-Anwendung, die wirklich gut funktioniert und nicht im Querformat arbeiten muss).

Antwort

5

Sie müssen das Attribut auf jede Aktivität setzen. Wenn Sie eine native Android-Anwendung erstellen würden, müssten Sie jede Aktivität im Manifest mit android:screenOrientation="portrait" markieren, indem Sie dieses Attribut für Mono verwenden, damit Android dasselbe tut.

Leider erbt das Attribut nicht, wie Sie bemerkt haben.

+0

Dies wirklich sut, denn wenn ich einige Standardthemen/Hintergrundbilder/Orientierungseinstellungen für meine Aktivitäten festlegen möchte, kann ich es nicht in einer Basisklasse machen. Dies führt zu einer Menge Code-Wiederholung –

+0

@ EduardoCoelho Sie können immer noch eine Basisklasse verwenden, aber jede Aktivität muss die Ausrichtung individuell festgelegt haben – dmck

Verwandte Themen