1

iOS アプリを Android に移植しています。iOS アプリの機能の 1 つは、左と右のトラック イメージ (下の図) を使用するカスタム UISlider ですが、これまでのところ、この同じ動作を再現することはできません。アンドロイド側。

ここに画像の説明を入力

画像から、右側のトラック画像に使用される白い画像があり、左側のトラック画像が赤または緑の画像になることがわかります (人がゴールにどれだけ近いかに基づいて)。以下は、ProgressBar の XML です (ちなみに、ProgressBar と SeekerBar のどちらが最良の選択であるかはわかりません。相互作用がなく、表示された後にバーが変化しないためです。バーに似ているからです)。画像のグラフタイプ)

<ProgressBar
            android:id="@+id/MTDMainBar"
            android:indeterminate="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxHeight="44dip"
            android:minHeight="44dip"
                style="?android:attr/progressBarStyleHorizontal"
                android:max="100"
                android:progress="50"
                android:background="@drawable/whitetrack"
                android:indeterminateDrawable="@drawable/greentrack"/>

しかし、これを行うと、緑色のトラック イメージがバーの進行状況側だけでなく、バ​​ー全体を埋め尽くします。私もprogressDrawableを試しましたが、同じ結果が得られたので、次に何を試すべきか少し迷っています。このタイプの動作に適した設定の組み合わせについて何か助けはありますか?

- - -新情報 - - - - - - -

さて、私は今そこにいる途中ですが、私を悩ませていることの1つは、実際にはやりたくないことがわかっている幅の値をハードコーディングしない限り、ProgressBar が内部の TableRow を埋めていないように見えることです。 Android デバイスの画面幅はさまざまです。

以下は、Androidディスプレイに関する限り、これまでに取得したもののスクリーンショットです ここに画像の説明を入力

そして、以下は私が使用してきたコードです

//this is the code in the Fragment Class
@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);


    Drawable greentrack = getResources().getDrawable(R.drawable.green_progress_clip);
    greentrack.setLevel(35);

    Drawable whitetrack = getResources().getDrawable(R.drawable.white_progress_clip);
    whitetrack.setLevel(100);

    MTDProgressbar = (ProgressBar)getActivity().findViewById(R.id.MTDMainBar);
    MTDProgressbar.setProgressDrawable(greentrack);
    MTDProgressbar.setProgress(35);
    MTDProgressbar.setMax(100);

    MTDBackgroundbar = (ProgressBar)getActivity().findViewById(R.id.MTDBackgroundBar);
    MTDBackgroundbar.setProgressDrawable(whitetrack);
    MTDBackgroundbar.setProgress(100);
    MTDBackgroundbar.setMax(100);
}

そして、これは進行状況バーの XML データです

<TableRow
            android:id="@+id/MTDRow"
            android:layout_width="match_parent"
              android:layout_height="55dip">
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
        <ProgressBar
                android:id="@+id/MTDBackgroundBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxHeight="44dip"
            android:minHeight="44dip"
            android:paddingLeft="10dip"
            style="?android:attr/progressBarStyleHorizontal" />

        <ProgressBar
            android:id="@+id/MTDMainBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="10dip"
            style="?android:attr/progressBarStyleHorizontal"
            android:maxHeight="44dip"
            android:minHeight="44dip"/>

        </RelativeLayout>
              </TableRow>
4

1 に答える 1

1

組み込みの UI 要素でこれを行うことはできないと確信しています。おそらく ProgressBar を拡張して、独自のカスタム UI 要素を作成する必要があります。

于 2012-10-23T22:21:15.147 に答える