我需要在有关活动的部分中对视图进行分组,并按标题描述部分,因此我创建了自定义视图,如下所示:
public class Section extends LinearLayout {
public Section(Context context) {
this(context, null);
}
public Section(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Section, 0, 0);
String title = a.getString(R.styleable.Section_textHeader);
a.recycle();
setOrientation(LinearLayout.VERTICAL);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.section_header, this, true);
TextView titleTextView = (TextView) getChildAt(0);
titleTextView.setText(title);
}
}
我使用如下视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/eu.szwiec"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="8dip" >
<eu.szwiec.Section
android:layout_width="match_parent"
android:layout_height="wrap_content"
custom:textHeader="Sample Header" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="go to second activity" />
</eu.szwiec.Section>
</LinearLayout>
此解决方案有效,但我认为有两件事需要改进:
您有什么想法可以更好地解决这个问题吗?或以上方法是最好的?
答案 0 :(得分:0)
1)您不需要外部LinearLayout。只需在xml中声明部分填充,并记住也将xmlns:android="http://schemas.android.com/apk/res/android"
放在那里。
2)你需要声明宽度和高度。我相信你可以使用样式,但我认为它不适合layout_xxx属性。