최소한의 상용구 코드로 레이아웃을 재사용하거나 별칭을 지정하는 방법을 알고 싶습니다.레이아웃 별칭에 대한 Android 설명서가 잘못 되었나요?
Android documentation about layout aliases이 올바르지 않고 일관성이 없어 보입니다.
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
나는 이것을 컴파일하려고하면
가, 내가Attribute is missing the Android namespace prefix
오류 : 문서의이 섹션에서는 예를 들어 다음과 같은 레이아웃 파일을 보여줍니다. 심지어
resources
요소에 네임 스페이스를 추가 한 후, 나는
error: Error: String types not allowed (at 'type' with value 'layout').
Elsewhere in the Android documentation를 얻을, 그들은 별명 레이아웃에 다른 겉으로는 거꾸로 잘못된 방법을 보여
기존 레이아웃에 별칭을 만들려면 사용 요소 인 에 포장 된 입니다. 예를 들어 :
<?xml version="1.0" encoding="utf-8"?> <merge> <include layout="@layout/main_ltr"/> </merge>
는이 로그 캣 E/AndroidRuntime(1558): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
에서 다음과 같은 오류가 발생합니다 실행합니다. 따라서이 오류는 <include>
<merge>
쌍이 불필요한 부모 인 View
을 필요로하기 때문에 실수 여야한다는 사실을 강조하는 것으로 보입니다.
마지막으로 이 있는데, 이전 방향과 모순되는 것처럼 보이며, 반전 된 형태의 최상위 레벨 인 <merge><include/></merge>
에 대한 언급이 없습니다.
이러한 중복보기 그룹을 포함하지 않으려면 대신 요소를 재사용 가능한 레이아웃의 루트보기로 사용할 수 있습니다. 예를 들어 :
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
[첫 번째 방법] (http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters)은 컴파일되어 제대로 작동하는 것 같습니다. 최신 SDK 도구가 설치되어 있습니까? – Joe
@Joe가 이것을 확인해 주셔서 감사합니다! 결국 나는 지시 사항을주의 깊게 읽지 않았다. layout.xml을'values-large' 폴더가 아닌'layout-large' 폴더에 넣으십시오. –