《第一行代码》第2版——创建自定义标题栏控件产生的问题

环境:

我:Android studio3.5版本
书:Android studio2.2版本

问题及解决:

(1)在创建自定义标题栏控件时,没有明确代码写在哪个文件里。

解决方案:
在图示位置新建一个TitleLayout.java,
图1

(2)出现如图问题

在这里插入图片描述在这里插入图片描述

问题详情:
Missing package statement:‘com.example.uicustomviews’
Inspection info:Detects package statements that do not correspond to the project directory structure and reports classes without package statements.
翻译:
缺少包语句:“com.example.uicustomviews”
检查信息:检测与项目目录结构不对应的包语句,并报告没有包语句的类。

相应代码:

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.LinearLayout;

import com.example.uicustomviews.R;


public class TitleLayout extends LinearLayout {
    public TitleLayout(Context context, AttributeSet attrs){
        super(context,attrs);
        LayoutInflater.from(context).inflate(R.layout.title,this);
    }

}

解决:

在TitleLayout.java代码最前面加上包语句

package com.example.uicustomviews;
//com.example.uicustomviews是我自己的包名,你根据自己的包名去更改

在这里插入图片描述

另附上TitleLayout.java完整代码:

package com.example.uicustomviews;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

//创建自定义控件
//新建TitleLayout继承自LinearLayout,让他成为我们自定义的标题栏控件
public class TitleLayout extends LinearLayout {
    public TitleLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.title,this);
        //from():通过LayoutInflater的from()方法可以构建出一个LayoutInflater对象
        //inflate():调用inflate()方法可以动态加载一个布局文件,inflate()方法接收两个参数
        //1.要加载的布局文件的id,这里我们传入R.layout.title
        //2.给加载好的布局在添加一个父布局,这里我们制定为TitleLayout,于是直接传入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();
            }
        });
    }
}



随手点赞的你真好看b( ̄▽ ̄)d~~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值