Frage

Eine unserer Ansichten hat eine ScrollView als Wurzel -Layout. Wenn das Gerät gedreht wird und onConfigurationChanged() heißt, wir möchten in der Lage sein, das zu bekommen ScrollViewNeue Breite/Höhe. Unser Code sieht so aus:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    Log.d(TAG, "Width: '" + findViewById(R.id.scrollview).getWidth() + "'");
    Log.d(TAG, "Height: '" + findViewById(R.id.scrollview).getHeight() + "'");

    super.onConfigurationChanged(newConfig);

    Log.d(TAG, "Width: '" + findViewById(R.id.scrollview).getWidth() + "'");
    Log.d(TAG, "Height: '" + findViewById(R.id.scrollview).getHeight() + "'");
}

Der relevante Abschnitt unseres AndroidManifest.xml sieht folgt aus:

<activity android:name=".SomeActivity"
    android:configChanges="keyboardHidden|orientation">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
    </intent-filter>
</activity>

Und schließlich sieht der relevante Teil unseres Layouts so aus:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollview"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    >
    <LinearLayout android:id="@+id/container"
        android:orientation="vertical"
        android:layout_height="fill_parent"
        android:minHeight="200dip"
        android:layout_width="fill_parent"
        >

Auf unserem Droiden erwarteten wir, dass die Breite des Scrollviews auf 854 verläuft, wenn sie in die Landschaft umgestellt wurden, und auf 480, wenn sie wieder auf das Porträt umgestellt sind (und die Höhe der äquivalente Schalter, abzüglich der Menüleiste). Wir sehen jedoch das Gegenteil. Hier ist unser Logcat:

// Switching to landscape:
03-26 11:26:16.490: DEBUG/ourtag(17245): Width: '480'  // Before super
03-26 11:26:16.490: DEBUG/ourtag(17245): Height: '778' // Before super
03-26 11:26:16.529: DEBUG/ourtag(17245): Width: '480'  // After super
03-26 11:26:16.536: DEBUG/ourtag(17245): Height: '778' // After super

// Switching to portrait:
03-26 11:26:28.724: DEBUG/ourtag(17245): Width: '854'  // Before super
03-26 11:26:28.740: DEBUG/ourtag(17245): Height: '404' // Before super
03-26 11:26:28.740: DEBUG/ourtag(17245): Width: '854'  // After super
03-26 11:26:28.740: DEBUG/ourtag(17245): Height: '404' // After super

Offensichtlich erhalten wir die Porträtdimensionen, wenn wir in die Landschaft wechseln, und die Landschaftsabmessungen, wenn wir auf Porträt wechseln. Gibt es etwas, das wir falsch machen? Wir könnten hacky werden und dies lösen, aber ich habe das Gefühl, dass es eine einfache Lösung gibt, die wir vermissen.

War es hilfreich?

Lösung

Wenn Sie Ihren Ruf anschauen, bin ich nicht sicher, ob Sie nicht von Lookup-Spalten gehört haben, wie dies in diesem MSDN-Artikel Sie tun genau das, was Sie wollen, aber nur Unterschied sind, dass sie mit Bündel spielenvon Bananen und Ihrem mit Werkzeugen;)

hoffe es hilft auch :)

edit

Da Sie nach XSLTlistViewWebPart suchen, können Sie Caml-Joins und -projektionen verwenden, wie in Buch SharePoint 2010 als Entwicklungsplattform .

Andere Tipps

Wenn Sie immer eine neue Site, eine neue Seite, eine Bibliothek oder eine Liste erstellen, haben Sie die Option, sie nicht in QuickLaunch anzuzeigen.Seiten, die Ausnahme sind, aber das kann auf jeder Site in der Seite Navigationseinstellungen konfiguriert werden.

Wenn Sie es nicht standardmäßig überhaupt nicht möchten, können Sie Ihre Masterpage in SharePoint Designer immer bearbeiten und die Steuerung "topnavigationmenuv4" (in SP2010) finden und die Eigenschaften der Eigenschaften generationspflichtig einstellen, um 1 oder 0-Stufen anzuzeigen.Gleiches gilt für die Quicklaunch-Steuerung "CurrentNav" (dieselben Eigenschaften).

Wenn Ongloballayout genannt wird, ist es nicht sicher, ob die Ansicht entsprechend der neuen Layout -Orientierung geändert wurde. Für mich funktionierte nur die folgende Lösung ordnungsgemäß:

@Override
public void onConfigurationChanged(Configuration newConfig) {
final int oldHeight = mView.getHeight();
final int oldWidth = mView.getWidth();

mView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if (mView.getHeight() != oldHeight && mView.getWidth() != oldWidth) {
                mView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                //mView now has the correct dimensions, continue with your stuff
            }
        }
    });
    super.onConfigurationChanged(newConfig);}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top