2016-04-26 5 views
1

Ich versuche, eine vertikale ProgressBar anzuzeigen. Ich habe begonnen, VerticalProgressBar von diesem GitHub zu verwenden: https://github.com/halzhang/Android-VerticalProgressBarUnmöglich, Vertical ProgressBar größer zu machen

Aber diese Lösung funktioniert nicht auf einem der Testgeräte und nur auf einem. Die Leiste zeigt den Fortschritt nicht an.

Also habe ich erstellen einfach nur eine grundlegende ProgressBar- und drehen:

<ProgressBar 
    android:id="@+id/pb_time_remaining" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:max="1005" 
    style="@style/Widget.AppCompat.ProgressBar.Horizontal" 
    android:layout_centerHorizontal="true" 
    android:layout_alignParentTop="true" 
    android:rotation="270" 
    android:indeterminate="false"/> 

Vertical ProgressBar

Diese Arbeit perfekt ... aber meine Bedürfnisse sind wirklich präzise. Wenn ich dies tue, wird der Fortschritt nicht auf der gesamten Höhe der Komponente angezeigt, sondern nur auf einem festen% der Höhe, wie Sie auf dem Bildschirm oben sehen können. Ich habe festgestellt, dass dieses% durch die Breite der Komponente festgelegt ist, deshalb wird die Komponente mit einer 'match_parent'-Breite festgelegt.

Dieser Zustand ist nicht ärgerlich, wenn es horizontal ist, weil die Breite die Größe des Fortschritts angeben, den Sie wollen .. Ich brauche es für den gesamten Bildschirm passen, und ich kann keine größere Höhe/Breite einstellen, als es ist in 'match_parent'.

Auch, wie Sie sehen können, gibt es keine Polsterung, Marge, oder irgendetwas anderes ..

Hat jemand irgendeine Spitze müssen die ProgressBar machen passen genau die Höhe des Bildschirms, so dass es größer machen, als es hat eigentlich?

Vielen Dank im Voraus

EDIT:

Die ProgressBar ist ein direkter Nachkomme des Haupt RelativeLayout der Aktivität.

Antwort

0

würde ich folgendes in den entsprechenden onCreate() Methode versuchen:

LayoutParams params = null; 
ProgressBar progress = (ProgressBar)findViewById(R.id.progressBar); 
Map<String, Integer> map = deriveMetrics2(this); 
params = button.getLayoutParams(); 
params.height = 20; //use appropriate value here. 
params.width = map.get("screenHeight"); 
progress.setLayoutParams(params); 

public Map<String, Integer> deriveMetrics(Activity activity) { 
    try { 
     DisplayMetrics metrics = new DisplayMetrics(); 

     if (activity != null) { 
      activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     } 

     Map<String, Integer> map = new HashMap<String, Integer>(); 
     map.put("screenWidth", Integer.valueOf(metrics.widthPixels)); 
     map.put("screenHeight", Integer.valueOf(metrics.heightPixels)); 
     map.put("screenDensity", Integer.valueOf(metrics.densityDpi)); 

     return map; 
    } catch (Exception err) { 
     ; // just use zero values 
     return null; 
    } 
} 

Hoffe, es hilft.

P.S. Natürlich erklären Sie die Funktion außerhalb onCreate ...

+0

Danke, aber das funktioniert nicht. Die Höhe des Fortschritts ist wiederum abhängig von der Breite, so dass die einzige Sache, die einige Änderungen macht, ist, den params.width Wert zu ändern ... – BorbagUskada

+0

Ah, ich erinnere mich, haben Sie meine bearbeitete Version getestet? – frankenapps

+0

Ja, ich habe es bereits getestet .. Ich habe mit params.width = map.get ("screenHeight") getestet; und mit 1500 ... Nichts funktioniert, die Progress-Höhe ist auf der Entsprechung der Breite des Bildschirms festgelegt, unabhängig davon, welche Breite ich angeben. – BorbagUskada