如何根据已恢复状态调用不同的视图

时间:2015-09-22 11:59:29

标签: android progress-bar views android-progressbar

我有一个可扩展的列表视图,父“group”行包含TextView“for Name”和ProgressBar“for RSSI”。现在代表的RSSI 信号健康状况可以是20%,40%,60%,80%或100%,进度条应指示信号的健康状况。

所以我创建了5个进度条,其值为android:progress =“”根据信号强度的不同而不同。

例如,

if the RSSI = -70; I should display the progressBar with 20%

if the RSSI = -50; I should display the progressBar with 40%

if the RSSI = -30; I should display the progressBar with 60%

if the RSSI = -10; I should display the progressBar with 80%

所以我创建了belwo xml文件,显示了进度栏的进度百分比不同。

现在我的问题是,根据收到的RSSI调用每个进度条的推荐方法是什么

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
android:paddingTop="10dp"
tools:context=".ProgressBarTutorial" >

<ProgressBar
    android:id="@+id/progressBar1"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:progressDrawable="@drawable/progress"
    android:progress="20" />

<ProgressBar
    android:id="@+id/progressBar2"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:progressDrawable="@drawable/progress"
    android:layout_below="@+id/progressBar1"
    android:layout_marginTop="30dp"
    android:progress="40"/>

<ProgressBar
    android:id="@+id/progressBar3"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:progressDrawable="@drawable/progress"
    android:layout_below="@+id/progressBar2"
    android:layout_marginTop="30dp"
    android:progress="60"/>

<ProgressBar
    android:id="@+id/progressBar4"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:progressDrawable="@drawable/progress"
    android:layout_below="@+id/progressBar3"
    android:layout_marginTop="30dp"
    android:progress="80"/>

<ProgressBar
    android:id="@+id/progressBar5"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:progressDrawable="@drawable/progress"
    android:layout_below="@+id/progressBar4"
    android:layout_marginTop="30dp"
    android:progress="100"/>

</RelativeLayout>

2 个答案:

答案 0 :(得分:2)

我没有动过,为什么你创建了5个progressBar用于显示进度,但是,如果要显示progressBar,则应使用mProgressBar.setVisibility(View.Visible);并隐藏使用mProgressBar.setVisibility(View.GONE);

View.setVisibility(int)

对于访问progressBars,在我看来,你可以使用Map类的一些实现。 (例如HashMap

如果您只想显示进度,最佳解决方案是使用ProgressBar.setProgress(int)

答案 1 :(得分:1)

我想在代码中动态添加/显示进度条,您可以将方法set visibility(int VISIBILITY)与常量View.VISIBLEView.INVISIBLE一起使用。

但是,我认为最好只有一个操作栏并根据您的RSSI更改进度(在progressBar上使用setProgress(int))