Android自定义控件

自定义View之自定义设置界面栏位

2017-03-31  本文已影响101人  Ugly_K

自定义View之自定义设置界面栏位

在app的应用设置中经常会有如下所示的设置样式,正好学习自定义view,下面我们就先实现一个;

效果效果

1.开启新的自定义view

public class ComboBox extends RelativeLayout{

    public ComboBox(Context context) {
        super(context);
    }

    public ComboBox(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ComboBox(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
  }

2.设置到xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.skkk.ww.costomviewdemo.MainActivity">
        <com.skkk.ww.costomviewdemo.ComboBox
            android:id="@+id/cb_test"
            combo:title="测试一下吧"
            combo:checkedContent="右侧勾选框被选中"
            combo:unCheckContent="右侧勾选框取消选中"
            combo:ischeck="true"
            android:layout_width="match_parent"
            android:layout_height="100dp" />
</LinearLayout>  

其实这个时候运行项目就可以显示出自定义view了,但是我没什么都没有设置,所以只是一片空白;

3.自定义view布局

4.自定义属性

通过以上的操作我们就可以得到一个像模像样的设置栏位了,当然,所有的属性我们都需要在java文件中修改,这不是我们想要的,我们如何才能向正常的控件一样在xml中定义各种属性呢?这就需要用的自定义属性了。

5.自定义方法

能够在xml中设置属性还不够,我们还要在java代码中设置属性,接下来构造对应的设置方法

6.正式使用

public class MainActivity extends AppCompatActivity {
    private ComboBox cbTest;
    private String TAG=this.getClass().getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cbTest = (ComboBox) findViewById(R.id.cb_test);
        cbTest.setLeftContainerClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (cbTest.isChecked()){
                    Logger.t(TAG).i("设置勾选为TRUE");
                    cbTest.setChecked(false);
                }else {
                    cbTest.setChecked(true);
                }
            }
        });
    }
}

这样就获得了一个简单的自定义view!

7.源码传送门

我是一只咸鱼,不想承认,也不能否认,不要同情我笨,又夸我天真,还梦想着翻身...

上一篇 下一篇

猜你喜欢

热点阅读