1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

große Leerraum bei Views

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von xazen, 08.04.2011.

  1. xazen, 08.04.2011 #1
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    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)

    [​IMG]
    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.
     
  2. xazen, 11.04.2011 #2
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    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.
     

Diese Seite empfehlen