2016-04-26 15 views
1

私は垂直なProgressBarを表示しようとしています。 私はこのGitHubからVerticalProgressBarを使い始めました:https://github.com/halzhang/Android-VerticalProgressBar垂直ProgressBarを大きくすることができません

しかし、この解決策はテストデバイスの1つでは動作しません。バーには進行状況が表示されません。

だから、私は単に基本的なプログレスバーを作成し、それを回転させてきました:

<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

この仕事を完璧に...しかし、私のニーズは本当に正確です。 これを行うと、コンポーネントのすべての高さに進捗が表示されるのではなく、上記の画面で確認できる高さの固定%だけが表示されます。私は、この%がコンポーネントの幅で固定されていることがわかりました。なぜなら、コンポーネントは 'match_parent'幅で設定されているからです。

この状態は、幅があなたが望む進捗のサイズを示しているので、邪魔になることはありません。 私はそれを画面全体に合わせる必要があります。それは 'match_parent'にあります。また

、あなたが見ることができるように、パディング、マージン、または何か他のものはありません。..

誰かがプログレスバーが正確に画面の高さを適合させるための任意のヒントを持っているので、それよりも、それは大きな作るん実際にはありますか?事前に

おかげ

EDIT:

プログレスバーが活動の主なRelativeLayoutの直接の子です。

答えて

0

私は(対応のonCreateに次のようにしようとするだろう)方法:

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; 
    } 
} 

それがお役に立てば幸いです。

P.S.もちろん、onCreateの外に関数を宣言してください...

+0

ありがとう、しかしそれは動作しません。進捗の高さは再び幅に依存するので、いくつかの変更を加える唯一のことはparams.widthの値を変更することです。 – BorbagUskada

+0

ああ、編集したバージョンをテストしたことを覚えていますか? – frankenapps

+0

ええ、私はすでにそれをテストしました..私はparams.width = map.get( "screenHeight")でテストしました。 1500と...何も動作していません、進捗の高さは、指定した幅に関係なく、画面の幅に相当する値に固定されます。 – BorbagUskada

関連する問題