2012-04-25 22 views
9

Tôi đang phát triển Android 3.1. và trên ứng dụng.Bố cục RelativeLayout này hoặc phụ huynh LinearLayout của nó là vô dụng

Trên một hoạt động, tôi tự động tạo bố cục của nó. Tôi đang sử dụng formdetail.xml như contentView:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.formdetail); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) 
    { 
     currentFormId = extras.getString("FormId"); 
    } 
} 

formdetail.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/detailLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 
     <Button 
      android:id="@+id/downloadFormsButton" 
      android:enabled="false" 
      android:layout_alignParentLeft="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="10dp" 
      android:text="@string/download_forms_button" /> 
     <TextView 
      android:id="@+id/formErrorMsg" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentBottom="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:textSize="16dp" > 
     </TextView> 
    </RelativeLayout> 

</LinearLayout> 

downloadFormsButtonformErrorMsg phải luôn ở dạng.

Nhưng sử dụng xml mà tôi nhận được cảnh báo này:

This RelativeLayout layout or its LinearLayout parent is useless

Tôi cần LinearLayout thêm TableLayouts lập trình.

Tôi làm cách nào để giải quyết cảnh báo này?

+1

Tôi nghĩ rằng cha mẹ của bạn bố trí quấn chỉ có một đứa trẻ và bạn có thể tối ưu hóa bố cục của bạn bằng cách loại bỏ cha mẹ LinearLayout – Borys

Trả lời

7

Bạn bỏ qua hoặc nhấp chuột phải vào dự án của bạn. Nhấp vào Build Path->Configure Build Path.... Dưới Android Lint Preferences tìm kiếm UselessParent và đặt mức độ nghiêm trọng là bỏ qua hoặc nhấp vào Ignore All.

EDIT:

Tôi lấy phần cuối cùng đó. Tôi nghĩ rằng Ignore All sẽ xóa tất cả các cảnh báo và lỗi Lint.

+0

Trong Eclipse Juno là menu này nằm trong Dự án của bạn Properties-> Android Lint Preferences – GMBrian

1

Đó chỉ là cảnh báo từ lint. Lint không biết sau này bạn sẽ thêm lượt xem vào bố cục này và nó sẽ cảnh báo bạn rằng bạn đã thêm chế độ xem bổ sung không cần thiết (tăng độ sâu bố cục).

Bạn chỉ cần bỏ qua cảnh báo (Nếu nó thực sự làm phiền bạn ở đây là một liên kết trên how to remove warnings từ lint).

12

Lint là chính xác trong cảnh báo của nó, LinearLayout của bạn không làm bất cứ điều gì hữu ích, vì con duy nhất của nó là RelativeLayout. Xóa LinearLayout:

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

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/detailLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<Button android:id="@+id/downloadFormsButton" 
     android:enabled="false" 
     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:text="@string/download_forms_button" /> 
<TextView 
     android:id="@+id/formErrorMsg" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentBottom="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:textSize="16dp" /> 
</RelativeLayout> 
+0

Như bạn có thể đọc trong tôi câu hỏi, tôi cần một LinearLayout để thêm TableLayouts lập trình. – VansFannel

+2

sau đó bạn có thể thêm chúng vào RelativeLayout của bạn ... hoặc là tôi chỉ giải thích lý do cho cảnh báo Lint – CSmith

2

Tôi cũng gặp vấn đề tương tự với bố cục ứng dụng của mình.

Tôi không biết làm thế nào và nó là đúng cách hay không, nhưng điều này được giải quyết sau khi thiết lập thuộc tính nền cho cả hai bố trí.

Hiện không có cảnh báo và hoạt động hoàn hảo. Hy vọng nó cũng sẽ làm việc cho bạn.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:background="@drawable/bg" 
    android:layout_height="match_parent" > 

     <FrameLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="10dp" 
      android:background="@drawable/bg2" 
      android:layout_marginTop="10dp" > 

      <ImageView 
       android:id="@+id/img_BookImage" 
       android:layout_width="200dp" 
       android:layout_height="200dp" 
       android:scaleType="fitXY" 
       android:contentDescription="@string/India" 
       android:src="@drawable/india" /> 
     </FrameLayout> 

    </FrameLayout> 
+0

Tôi có hai bố cục tuyến tính mà linter được thừa nhận là thừa, nhưng cái đầu tiên giữ hình nền được cố định với nguồn gốc màn hình, bố cục thứ hai đặt một số trường nhập và văn bản được căn giữa như một nhóm theo chiều ngang và theo chiều dọc.Tôi không thể tìm thấy một cách để có mà không sử dụng hai bố trí, do đó xác định android: thuộc tính nền của cả hai bố trí loại bỏ các cảnh báo. –

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