我正在将 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>