
DieGoldeneMitte
Dauergast
Hallo,
ich möchte in einem Dialog einen selbst programmierten View rendern. Dieser setzt seine Größe in onMeasure() mittels setMeasuredDimension(w,h) auf feste Werte. Bei der Höhe wird mein Wert vom Dialog auch respektiert (sprich benutzt), aber bei der Breite nicht (diese wird aus den Buttons darunter bestimmt). Kann man den Dialog dazu bringen, die Breite des Views zu nutzen,oder muss ich irgendwie die Breite von außen erzwingen? Oder habe ich irgendetwas naheliegendes übersehen?
ADD:
setMinimumWidth() und setMeasuredWidth( MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY,w),h) helfen beide nicht. Übrigens wird der Dialog zu groß, wenn ich MeasureSpec auf die Höhe anwende? Wieso datt denn? ;-)
Der Dialog wird ganz normal wie folgt gesetzt:
Das Layout:
Der Custom View:
ich möchte in einem Dialog einen selbst programmierten View rendern. Dieser setzt seine Größe in onMeasure() mittels setMeasuredDimension(w,h) auf feste Werte. Bei der Höhe wird mein Wert vom Dialog auch respektiert (sprich benutzt), aber bei der Breite nicht (diese wird aus den Buttons darunter bestimmt). Kann man den Dialog dazu bringen, die Breite des Views zu nutzen,oder muss ich irgendwie die Breite von außen erzwingen? Oder habe ich irgendetwas naheliegendes übersehen?
ADD:
setMinimumWidth() und setMeasuredWidth( MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY,w),h) helfen beide nicht. Übrigens wird der Dialog zu groß, wenn ich MeasureSpec auf die Höhe anwende? Wieso datt denn? ;-)
Der Dialog wird ganz normal wie folgt gesetzt:
Code:
Dialog d= new Dialog(this); d.setContentView(R.id.mylayout)
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/root"
>
<dgm.playground.WidthBug
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/bug"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Setzen"
android:id="@+id/okay"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Abbruch"
android:id="@+id/cancel"
/>
</LinearLayout>
</LinearLayout>
Code:
package dgm.playground;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class WidthBug extends View {
int h, w;
Paint yellow;
public WidthBug( Context context, AttributeSet attrs ) {
super( context, attrs );
h = 256;
w = 256;
yellow = new Paint();
yellow.setColor(0xffffff00);
yellow.setStrokeWidth(4);
}
@Override
public void onMeasure( int hSpec, int wSpec ) {
setMeasuredDimension( w, h );
}
@Override
public void onDraw( Canvas c ) {
c.drawLine(0,0,w/2,h/2,yellow);
c.drawLine(0,h,w/2,h/2,yellow);
}
}
Zuletzt bearbeitet: