我正在将iOS应用程序移植到Android,iOS应用程序中的一个功能是使用左右轨道图像的自定义UISlider(如下图所示),但到目前为止我似乎无法复制此Android方面的相同行为。
从图像中可以看到,右轨道图像有一个白色图像,然后左轨道图像将是红色或绿色图像(基于人与目标的接近程度)。下面是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);
}
这是Progress Bars的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>
答案 0 :(得分:1)
我很确定你不能使用内置的UI元素来做这件事,你必须制作自己的自定义UI元素,可能会扩展ProgressBar。