große Leerraum bei Views

X

xazen

Ambitioniertes Mitglied
0
Ich habe eine relativ simple Frage diesmal. Wahrscheinlich ist es nur ein kleiner Fehler. Aber ich verstehe es einfach nicht. Ich habe jetzte mehrere Dialoge. Bei allen habe ich oben ein großen Freiraum. Gerade bei kleinen Geräten wie das FlipOut ist es sehr ärgerlich.

Und gerade bei dem Dialog sollten unten eigentlich noch 2 SeekBars sein und 1 Button. Es wird aber nichts davon angezeigt, es sei denn ich füge adde die Elemente noch vor dem View (mit dem Herz)


Der Code dieses Dialoges sieht so aus:

Code:
public class PositionDialog extends Dialog {
    
    protected final String TAG = "Position Dialog";
    
    private OnClickListener monClickListener;
    private    int hand = 0;
    private    int xValue;
    private    int yValue;
    private    SeekBar xBar;
    private    SeekBar yBar;

    private Rect positionViewRect = new Rect(10,10,100,100);
    private Rect clockRect = new Rect();
    private Bitmap bm_positionView;
    private Bitmap bm_clock;
    
    private PositionView positionView = new PositionView (getContext());
    
    PositionDialog(Context context, OnClickListener l, int defaultHand){
        super(context);
        
        this.monClickListener = l;
        //Layout
        LinearLayout handLayout= new LinearLayout(getContext());
        handLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        handLayout.setOrientation(LinearLayout.VERTICAL);
        handLayout.setPadding(10, 0, 10, 10);
        
        //Ueberschrift
        TextView title = new TextView(getContext());
        title.setText(R.string.title_PositionDialog);
        title.setTextAppearance(getContext(), R.style.title);
        
        //PositionView
        bm_positionView = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.background);
        bm_positionView = Bitmap.createScaledBitmap(bm_positionView, 100, 100, true);
        positionView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        
        //Text für Seekbar
        TextView tx_xBar= new TextView(getContext());
        TextView tx_yBar = new TextView(getContext());
        tx_xBar.setText(R.string.PositionDialog_horizontal);
        tx_xBar.setTextAppearance(getContext(), R.style.headline);
        tx_yBar.setText(R.string.PositionDialog_vertical);
        tx_yBar.setTextAppearance(getContext(), R.style.headline);
        
        //SeekBar
        xBar = new SeekBar(getContext());
        yBar = new SeekBar(getContext());
        xBar.setOnSeekBarChangeListener(positionView);
        yBar.setOnSeekBarChangeListener(positionView);
        xBar.setMax(100);
        yBar.setMax(100);
        
        //Button
        Button ok = new Button(getContext());
        
        //Views hinzufuegen
        handLayout.addView(title);
        handLayout.addView(positionView);
        handLayout.addView(tx_xBar);
        handLayout.addView(xBar);
        handLayout.addView(tx_yBar);
        handLayout.addView(yBar);
        handLayout.addView(ok);
        setContentView(handLayout);
    }
    
    //View um zu sehen wo die Uhr stehen wird
    private class PositionView extends View implements OnSeekBarChangeListener{
        
        Canvas canvas= new Canvas();
        
        public PositionView(Context context) {
            super(context);
        }
        
        @Override
        public void onDraw(Canvas canvas){
            canvas.drawBitmap(bm_positionView, null, positionViewRect, null);
            Log.d(TAG, "xBar: "+xBar.getProgress());
            Log.d(TAG, "yBar: "+yBar.getProgress());
            xBar.getProgress();
            yBar.getProgress();
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            onDraw(canvas);            
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            onDraw(canvas);            
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            onDraw(canvas);            
        }
    }
}

Es ist vielleicht etwas viel Code für eine Frage. Aber das Problem ist gerade, dass ich nicht weiß wie ich den Code einschränken soll, da ich nicht die geringste Ahnung habe woran es liegen könnte.
 
Wodurch der obere Teil des Leerraums kommt, weiß ich jetzt. Der Freiraum ist für den Titel des Dialoges. Ich habe den Titel mit in der View gepackt. Der untere Freiraum bleibt aber ein Rätsel. Es müssten direkt dadrunter 2 SeekBars zu sehen sein. Nur wenn man die Seekbar vor dem View ladet, sieht man es.
 

Ähnliche Themen

D
Antworten
17
Aufrufe
322
datNeMo
D
Y
Antworten
4
Aufrufe
1.187
swa00
swa00
R
  • RudolfHagen
Antworten
1
Aufrufe
637
koje71
koje71
Zurück
Oben Unten