android自定义视图 - 用于分组元素的标题的部分,最佳方法

时间:2013-04-14 21:06:17

标签: android view android-linearlayout

我需要在有关活动的部分中对视图进行分组,并按标题描述部分,因此我创建了自定义视图,如下所示:

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>

此解决方案有效,但我认为有两件事需要改进:

  1. LinearLayout中的LinearLayout不是最佳
  2. 我必须总是在android:layout_width和android:layout_height
  3. 中声明

    您有什么想法可以更好地解决这个问题吗?或以上方法是最好的?

1 个答案:

答案 0 :(得分:0)

1)您不需要外部LinearLayout。只需在xml中声明部分填充,并记住也将xmlns:android="http://schemas.android.com/apk/res/android"放在那里。

2)你需要声明宽度和高度。我相信你可以使用样式,但我认为它不适合layout_xxx属性。