2010-05-25 70 views
0

我想以編程方式更改水平進度條的寬度(初始大小使用RelativeLayout設置爲XML,但我想根據特定值動態更改它)。無法以編程方式更改水平進度條的寬度

我已經嘗試setMinimumWidth(50)在我的代碼中,但沒有什麼區別。我也嘗試設置'android:layout_width =「wrap_content」,但這也不起作用。

這裏是我的XML:

<ProgressBar android:id="@+id/progress_horizontal" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="100dip" 
    android:layout_height="wrap_content" 
/> 

預先感謝任何幫助!

回答

0

您的ProgressBar在哪些佈局?這對於layout_width和height是如何解釋有所不同。

但是,我認爲您看到視圖的寬度和layout_width之間存在衝突。每次渲染視圖時,其首選大小均基於其上設置的最小寬度,寬度等來確定。視圖所在的佈局然後可以基於layout_width信息更新要呈現的實際大小。有關兩階段過程的更多信息,請參見How Android Draws ViewsView尺寸文檔。

在你的情況,你有layout_width設置爲100,並設置爲50的最小寬度,所以我認爲這將始終顯示100

嘗試將layout_width爲wrap_content,然後更新首選ProgressBar的寬度。

+0

感謝您的快速響應!我正在使用RelativeLayout(見下文)。我確實將XML中的layout_width更改爲wrap_content,但沒有任何影響(進度條似乎保持固定大小 - 相對較小 - 無論我將setMinimumWidth更改爲什麼,我都將檢出您提供的文檔鏈接 <?xml version =「1.0」encoding =「utf-8」?> user380686 2010-05-25 18:59:51

+0

您可以編輯原始帖子,以更易讀的方式提供額外的RelativeLayout信息!可能有助於包含整個佈局,因爲使用RelativeLayouts時,佈局中的各種視圖會相互影響。 – 2010-05-25 19:06:14

0

我想象一下,當你給它一個100的初始值時,setmindwidth會被滿足。系統會識別它超過50,然後繼續按照它告訴的其餘部分去做。嘗試製作最小寬度150,將xml設置爲初始值75,並在onCreate中激發Log.d(「progbar」,String.valueOf(myprogress.width));

免責聲明 - 寫在工作電腦前沒有開發環境的參考。

+0

感謝您的快速解決方案ponse。我將xml更改爲75dip for layout_width。然後我設置最小寬度(200)和reran。不幸的是,這不起作用(即,沒有增加酒吧的大小)。當我在setMinimumWidth(200)之前和日誌信息相同之後運行Log.d(「progbar」,String.valueOf(myprogress.getWidth())) - 「D/progbar(565):0」 – user380686 2010-05-25 22:12:17