Frage

Ich versuche, indem eine benutzerdefinierte Ansicht eine benutzerdefinierte Grenze zu ziehen. Hier ist ein Beispiel von einer Seite der Grenze:

package com.sparkydev.guessaphrase;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RectShape;
import android.util.AttributeSet;
import android.view.View;

public class LeftBorder extends View {
    private ShapeDrawable vertRect, horizRect;

    public LeftBorder(Context context, AttributeSet attributeset) {
        super(context, attributeset);

        int width = this.getWidth();
        int height = this.getHeight();

        vertRect = new ShapeDrawable(new RectShape());
            vertRect.getPaint().setColor(Color.RED);
            vertRect.setBounds(0, 0, width/10, height);
        horizRect = new ShapeDrawable(new RectShape());
            horizRect.getPaint().setColor(Color.RED);
            horizRect.setBounds(0, 0, width, height/9);

    }

    protected void onDraw(Canvas canvas){
        vertRect.draw(canvas);
        horizRect.draw(canvas);
    }

}

Und die andere Seite ist so ziemlich die gleiche Art und Weise definiert. Die XML wird als solche definiert:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/wallpaper">


    <!-- Declares left border's position, which is
    drawn programmatically.-->
    <com.sparkydev.guessaphrase.LeftBorder
        android:id="@+id/leftborder"
        android:layout_alignParentLeft="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />



        <!-- Used a FrameLayout to contain
        the menu buttons.-->
        <FrameLayout 
        android:id="@+id/FrameLayout01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        >

            <!-- Menu buttons -->

        </FrameLayout>


    <!-- Declares right border position (on right
    of screen, below the left border) -->
    <com.sparkydev.guessaphrase.RightBorder
        android:layout_alignParentRight="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/leftborder"
    />



</RelativeLayout>

Das Problem ist, werden die Grenzen gar nicht angezeigt werden. Hintergrund zeigt, aber sonst nichts.

War es hilfreich?

Lösung

der "Building Benutzerdefinierte Komponenten" dev Führer , wenn eine benutzerdefinierte Ansicht erstellen, wird es eine festgelegte Größe von 100x100 haben, bis Sie nichts anderes angeben. Prüfen Sie, ob dies etwas mit dem Thema zu tun hat Sie sehen.

"Sie wollen mit ziemlicher Sicherheit onMeasure() außer Kraft zu setzen und sind wahrscheinlich auch nach Bedarf außer Kraft zu setzen onDraw(), wenn Sie die Komponente zu zeigen etwas wollen. Während beiden Standardverhalten haben, ist der Standard onDraw() wird nichts tun, und der Standard onMeasure() wird immer gesetzt eine Größe von 100x100 -. das ist wahrscheinlich nicht das, was Sie wollen "

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top