2011-08-26 27 views
12

Tôi có hai nút trên bố cục và trên thiết bị màn hình lớn (máy tính bảng) tôi muốn giới hạn chiều rộng của chúng để chúng trông không lố bịch. Tôi hy vọng sẽ sử dụng thuộc tính maxWidth nhưng dường như nó không có gì trong kịch bản của tôi. Dưới đây là định nghĩa bố cục - các nút sử dụng hết chiều rộng của bố cục, bỏ qua bất kỳ giá trị nào trong maxWidth.Tại sao maxWidth trên Nút không hoạt động và cách khắc phục?

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
> 
<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:maxWidth="100dp" 
    android:text="Button 1" 
/> 
<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:maxWidth="100dp" 
    android:text="Button 2" 
/> 
</LinearLayout> 

Tại sao và cách giải quyết hạn chế (rõ ràng là điên) này?

+0

Tại sao các nút layout_width 0dp và không wrap_content? – antlersoft

+0

@antlersoft - chiều rộng 0dp kết hợp với bố cục đối sánh layout_weight của các phần tử anh chị em sẽ đảm bảo rằng chúng có cùng chiều rộng với nhau – ataulm

Trả lời

11

Xóa dòng android:layout_weight="1" từ cả hai nút.
Thêm android:minWidth="50dp"android:layout_width="wrap_content"

EDIT:

Bạn cần phải tính toán kích thước nút bằng tay tùy thuộc vào kích cỡ màn hình. Trước tiên, bạn cần phải có một bộ kích thước màn hình tiêu chuẩn. Ví dụ, Nếu bạn phát triển các ứng dụng trên một màn hình rộng 400px, và nút là 100px rộng, sau đó công thức cho việc duy trì cùng một tỷ lệ button width to screen width trên tất cả các thiết bị này sẽ được như sau

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
buttonWidth = 100 * (metrics.widthPixels/400); 

Sử dụng trường hợp:
Nếu chiều rộng màn hình = 480px, sau đó chiều rộng nút phải là 120px.

+2

Tại sao? Các nút sau đó sẽ không mở rộng ở tất cả, và sẽ có chiều rộng bằng không –

+0

Đó là những gì làm cho các nút căng ra để lấp đầy toàn bộ chiều rộng của bố cục. Đặt minwidth cũng và thay đổi chiều rộng thành 'wrap_content' không phải 0dp. – Ronnie

+0

Nếu tôi xóa layout_weight, nút sẽ không mở rộng, đó là điều tôi muốn làm. Tôi muốn một nút có kích thước với kích thước thiết bị nhưng chỉ với kích thước tối đa. –

0

Thử đặt layout_width thành wrap_content so với 0dp.

+0

Đây là một trong nhiều biến thể mà tôi đã thử. Nó không tạo ra sự khác biệt nào. –

0

Width/Height dường như luôn ahve được thiết lập với nhau, .. Đây là hoạt động trong quan điểm của tôi

 <Button 
      android:text="Center" 
      android:layout_width="100dp" 
      android:layout_height="fill_parent" 
      android:id="@+id/selectionCenterButton" 
      android:minWidth="50dp" 
      android:minHeight="50dp" 
      android:maxWidth="100dp" 
      android:maxHeight="50dp" 
      android:layout_weight="1" /> 

Phụ huynh của nút được thiết lập để quấn nội dung, do quy mô xuống, nhưng lên đến tối đa là 400 rộng (4 nút)

+0

không hoạt động đối với tôi. –

Các vấn đề liên quan