美文网首页
Android简单的自定义控件

Android简单的自定义控件

作者: 随心者随心行 | 来源:发表于2017-08-19 17:00 被阅读0次

    我们所用的所有控件都是直接或间接继承自View的,所用的所有布局都是直接或间接继承自ViewGroup的.View是Android中最基本的一种UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,因此,我们使用的各种控件其实就是在View的基础之上又添加了各自特有的功能。而ViewGroup则是一种特殊的View,它可以包含很多子View和子ViewGroup,是一个用于放置控件和布局的容器。

    1.引入布局

    main xml

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    title.xhml

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:background="@drawable/title_bg"

    >

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:id="@+id/title_back"

    android:layout_gravity="center"

    android:layout_margin="5dp"

    android:background="@drawable/back_bg"

    android:text="Back"

    android:textColor="#fff"

    />

    android:layout_width="0dp"

    android:layout_height="wrap_content"

    android:id="@+id/title_text"

    android:layout_gravity="center"

    android:layout_weight="1"

    android:gravity="center"

    android:text="Title Text"

    android:textColor="#fff"

    android:textSize="24sp"

    />

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:id="@+id/title_edit"

    android:layout_gravity="center"

    android:layout_margin="5dp"

    android:background="@drawable/back_bg"

    android:text="Edit"

    android:textColor="#fff"

    />

    MainActivity.class

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main4_activiyt);

    ActionBar actionBar = getSupportActionBar();

    if(actionBar !=null){

    actionBar.hide();

    }

    }

    这里调用了getSupportActionBar()方法来活动ActionBar的实例,然后在调用ActionBar的hide()方法将标题栏隐藏起来

    2.创建自定义控件

    引入布局的技巧确实解决了重复编写布局代码的问题.

    现在学习如何自定义控件

    新建一个class 继承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();

    }

    });

    }

    然后把main.xml的代码修改

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    >

    我是一个自学Android和JavaWeb的菜鸟。如果可以Flower一下我的GitHub。感激不尽

    https://github.com/FoxconnPeter

    相关文章

      网友评论

          本文标题:Android简单的自定义控件

          本文链接:https://www.haomeiwen.com/subject/zgwtdxtx.html