1

我正在将 iOS 应用程序移植到 Android,iOS 应用程序中的一项功能是自定义 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,但得到了相同的结果,所以我对接下来要尝试什么有点迷茫。对于这种行为的正确设置组合有什么帮助吗?

- - -新的信息 - - - - - - -

好的,所以我现在大约一半了,但困扰我的一件事是 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 元素做到这一点,你必须制作自己的自定义 UI 元素,可能会扩展 ProgressBar。

于 2012-10-23T22:21:15.147 回答