입니다.이 CommonsWare 예제에 따르면 나는 RelgeLayout 하위 클래스를 병합 루트가있는 xml 레이아웃에 설명 된 내 레이아웃과 병합 할 수있었습니다. 내 유일한 관심사는 XML에서 RelativeLayout 매개 변수를 설명 할 수 없다는 것입니다.병합 레이아웃에서 XML을 통한 RelativeLayout에 대한 속성은
내 XML 레이아웃 :
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my="http://schemas.android.com/apk/res/hu.someproject"
android:layout_width="36dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:width="36dp" >
<RelativeLayout
android:id="@+id/upper_container"
style="?pretty_style"
android:layout_alignLeft="@+id/image_title"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/image_title"
android:layout_centerHorizontal="true" >
<View
android:id="@+id/upper_indicator"
android:layout_width="fill_parent"
android:layout_height="5dp"
android:layout_alignParentTop="true"
android:background="@color/mycolor" />
<TextView
android:id="@+id/text_degree"
style="?pretty_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="23°" />
</RelativeLayout>
<hu.MyView
android:id="@+id/image_title"
style="?my_image_title"
android:layout_below="@+id/upper_container"
android:layout_centerHorizontal="true"
my:myColor="#2f8741"/>
나는 병합 자체가 문제가 병합 병합 태그의 아이들은 어떻게 생각하고 있지. 어떻게하면 RelgeLayout에 영향을 미치기 위해 병합에서 매개 변수를 얻을 수 있습니까? 패키지 선언과 수입이없는
내 RelativeLayout의 서브 클래스 : 나는이의 LayoutParams에 모든 것을 추가 한 다음 그의 LayoutParams 내 MyRelativeLayoutSubclass을 추가 할 수 있지만 나는 그것을 탈출하려는 수있어
public class MyRelativeLayoutSubclass extends RelativeLayout {
public MyRelativeLayoutSubclass(Context context) {
super(context);
initTile(null);
}
public MyRelativeLayoutSubclass(Context context, AttributeSet attrs) {
super(context, attrs);
initTile(attrs);
}
public MyRelativeLayoutSubclass(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initTile(attrs);
}
private void initTile(Object object) {
final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.my_great_little_layout, this, true);
}
}
, 즉 많은입니다 불필요한 코드
이것은 매우 분명한 해결책이며, 왜 내가 그것을 놓쳤는 지 잘 모릅니다. – gmate
기본 속성을 쉽게 가질 수는 없습니다. 내 사용자 지정 구성 요소를 사용할 때마다 다시 입력해야합니다. – Timmmm
@Timmmm : MyRelativeLayoutSubclass는 XML의 속성을 읽으려고 시도 할 때 (속성과 만나는 데 실패 할 때) 사용되는 속성의 기본값을 가질 수 있습니다. – CommonsWare