乐趣区

关于android:Android-开发入门创建自定义控件

安卓控件和布局的继承构造:

3.4.1 引入布局

# app/src/main/res/layout/title.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bg">

    # 返回按钮
    <Button
        android:id="@+id/title_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dp"              # 指定控件在上下左右方向上的偏移间隔
        android:background="@drawable/back_bg"   # 指定控件的背景
        android:text="Back"
        android:textColor="#fff" />

    # 题目文本
    <TextView
        android:id="@+id/title_text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Title Text"
        android:textColor="#fff"
        android:textSize="24sp" />

    # 编辑按钮
    <Button
        android:id="@+id/title_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dp"              # 指定控件在上下左右方向上的偏移间隔
        android:background="@drawable/edit_bg"   # 指定控件的背景
        android:text="Edit"
        android:textColor="#fff" />

</LinearLayout>
# app/src/main/res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    # 应用下面创立的标题栏
    <include layout="@layout/title" />
    
</LinearLayout>
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 暗藏零碎自带的标题栏
        ActionBar actionbar = getSupportActionBar();
        if (actionbar != null) {actionbar.hide();
        }
    }
}

3.4.2 创立自定义控件

# app/src/main/java/com/example/uicustomviews/TitleLayout.java 

public class TitleLayout extends LinearLayout {

    // 构造函数
    public TitleLayout(Context context, AttributeSet attrs) {super(context, attrs);
        // 动静加载布局文件
        LayoutInflater.from(context).inflate(R.layout.title, this);
        
        Button titleBack = (Button) findViewById(R.id.title_back);
        Button titleEdit = (Button) findViewById(R.id.title_edit);
        
        titleBack.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {((Activity) getContext()).finish();}
        });
        
        titleEdit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {Toast.makeText(getContext(), "You clicked Edit button",
                        Toast.LENGTH_SHORT).show();}
        });
    }

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    # 增加自定义控件
    <com.example.uicustomviews.TitleLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
退出移动版