2012-04-15 41 views
39

Đây là quan điểm của tôi và tôi muốn thay đổi layout_width thành "10dip". Làm thế nào để làm như vậy lập trình? Lưu ý, đây không phải là Bố cục tuyến tính, đó là chế độ xem.Bố cục chế độ xem Android - cách thay đổi theo chương trình?

<View android:id="@+id/nutrition_bar_filled" 
    android:background="@drawable/green_rectangle" 
    android:layout_height="30dip" 
    android:layout_width="50dip"> 
</View> 

Tôi biết về LayoutParams. Làm cách nào để sử dụng nó để đặt chiều rộng thành 10dip?

Trả lời

113

Tôi tin rằng câu hỏi của bạn là thay đổi chỉ có chiều rộng của quan điểm tự động, trong khi các phương pháp trên sẽ thay đổi thuộc tính bố trí hoàn toàn với cái mới, vì vậy Tôi đề nghị để getLayoutParams từ xem đầu tiên, sau đó thiết lập chiều rộng trên layoutParmas, và cuối cùng thiết lập layoutparams để xem, do đó, làm theo các bước dưới đây để làm như vậy.

View view_instance = (View)findViewById(R.id.nutrition_bar_filled); 
LayoutParams params=view_instance.getLayoutParams(); 
params.width=newOne; 
view_instance.setLayoutParams(params); 
+12

Bạn cũng có thể chỉ cần thực hiện "view_instance.getLayoutParams(). width = newOne;" –

+8

để nhận các giá trị như 'match_parent', hoạt động này:' LayoutParams.MATCH_PARENT' – gnB

+0

@TonyWickham cách hoạt động? – snayde

8

hãy thử sử dụng

View view_instance = (View)findViewById(R.id.nutrition_bar_filled); 
view_instance.setWidth(10); 

sử dụng Layoutparams để làm như vậy, nơi bạn có thể thiết lập chiều rộng và chiều cao như dưới đây.

LayoutParams lp = new LayoutParams(10,LayoutParams.wrap_content); 
View_instance.setLayoutParams(lp); 
+0

bạn có thể làm rõ? Tôi gần như đã sẵn sàng để đánh dấu bạn là câu trả lời đúng. Làm thế nào để tôi có được view_instance? –

+0

@Hisoka sử dụng 'findViewById (R.id.nutrition_bar_filled)' để xem chế độ xem –

+0

Đó là điều đầu tiên tôi thử. Dường như rất trực quan, nhưng setWidth không phải là một hàm hợp lệ cho một khung nhìn. Xem fillBar = rowView.findViewById (R.id.nutrition_bar_filled); filledBar.setWidth (10) <- không hợp lệ. –

10

Bạn có thể thiết lập chiều cao và chiều rộng như cũng này:

viewinstance.setLayoutParams(new LayoutParams(width, height)); 
+8

Tôi nghĩ đây là phương pháp sai, nó sẽ mất mọi thuộc tính bố cục khác đã được đặt, ví dụ: layout_gravity – mwk

3

Hoặc đơn giản là:

view.getLayoutParams().width = 400; 
view.requestLayout(); 
Các vấn đề liên quan