2010-06-01 38 views
6

Tôi gặp sự cố khi định vị các yếu tố bố cục. AutoComplete trong TableLayout của tôi và nút sau khi nó được mở rộng TableRow lớn hơn chiều rộng của màn hình. Bất cứ ai cũng có một ý tưởng tại sao? Dưới đây là mã XML của tôi cũng như hình ảnh của vấn đề.Android - Yếu tố giao diện người dùng tắt màn hình

Cảm ơn trước !!

<?xml version="1.0" encoding="utf-8"?> 

<TableRow android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <AutoCompleteTextView android:id="@+id/installation" 
     android:textSize="14sp" android:completionThreshold="3" /> 
</TableRow> 
<TableRow android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <Button android:id="@+id/btn_find" android:text="@string/btn_find"></Button> 
</TableRow> 
<TableRow android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView android:id="@+id/error" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:paddingTop="20px" 
     android:textColor="#FF0000" /> 
</TableRow> 

Picture of UI

+0

Nó cũng giống như trên thiết bị thực tế? –

Trả lời

5

Theo mặc định, các vật dụng trong một TableRowandroid:layout_width="wrap_content". Điều đó không giới hạn bạn với kích thước của màn hình - wrap_content có nghĩa là "nội dung bọc", không phải "bao gồm nội dung nhưng vui lòng không rời khỏi cạnh màn hình, nếu bạn không phiền".

Trong trường hợp này, bạn không cần sử dụng TableLayout và đặt TableRows, vì bạn không có bảng.

Vì vậy, một cách tiếp cận là sử dụng RelativeLayout và có AutoCompleteTextView sử dụng android:layout_alignParentLeft="true"android:layout_alignParentRight="true". Điều đó sẽ ghim nó vào các cạnh bên ngoài của RelativeLayout, mà bạn có thể kích thước với android:layout_width=fill_parent để lấp đầy màn hình.

+0

Xin lỗi, mã Bảng đã bị xóa. Tôi đã xác định TableLayout, với định hướng được đặt thành dọc và fill_parent cho cả layout_width và layout_height. Bất kỳ ý tưởng? – Ryan

+1

Ý tưởng của tôi ở trên. Nếu bạn không làm điều gì đó để nói cho AutoCompleteTextView ở trong giới hạn màn hình, nó sẽ không nằm trong giới hạn màn hình. Một cách để làm điều đó là với 'RelativeLayout' như tôi đã mô tả ở trên. – CommonsWare

+0

Nevermind, điều này đã giúp rất nhiều! Xuất hiện để làm việc :) Cảm ơn !! – Ryan

38

Đối với những người cần bố cục bảng, hãy sử dụng tùy chọn layout_weight. Xem mã bên dưới.

 <TableLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:padding="6sp" android:id="@+id/detailsLayout"> 
      <TableRow 
       android:layout_width="wrap_content" 
       android:id="@+id/TableRow03" 
       android:layout_height="wrap_content"> 
       <TextView 
        android:id="@+id/TextView06" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:text="Detail 1"></TextView> 
       <TextView 
        android:text="@string/empty_value" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:id="@+id/sessionAudience" 
        android:layout_weight="1"></TextView> 
      </TableRow> 
     </TableLayout> 
+0

nó hoạt động !!! cảm ơn ... – Irshu

+0

Tuyệt vời ... Điều này hoạt động rất tốt. Lên bầu cho điều đó. –

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