Android Button基本使用

Button是Android中一个非常简单的控件,在我们平时的项目中,可以说是非常的常见,使用率也是相当高。本身对于这个控件的用法也是很好掌握的,下面我们就从几个方面介绍一下它的用法,以及一些自定义Button的使用。

Android Button基本使用_第1张图片
按钮效果图
1. 设置背景
  • 设置背景图
    xml布局:
  

  Java代码:

//方法一:
button.setBackground(ContextCompat.getDrawable(this, R.drawable.ic_launcher));
//方法二:
button.setBackgroundResource(R.drawable.ic_launcher);
  • 设置背景色
    xml布局:
  

  Java代码:

//方法一:
button.setBackgroundColor(getResources().getColor(R.color.colorAccent));
//方法二:
button.setBackgroundColor(Color.parseColor("#F8F8FF"));
2. 设置样式
  • 设置背景样式
    shape样式:

   
    
    
    
          

  xml布局:

  

  Java代码:

//方法一:
button.setBackground(ContextCompat.getDrawable(this, R.drawable.btn_bg));
//方法二:
button.setBackgroundResource(R.drawable.btn_bg);
  • shape属性
    Android shape属性大全

  • selector属性
    Android selector属性说明

  • layer-list属性
    Android layer-list基本用法

3. 点击事件

① 实现OnClickListener接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        Button btn = (Button) findViewById(R.id.btn);
        //绑定监听
        btn.setOnClickListener(this);
    }

    //重写onClick()方法
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
    }

}

② 匿名内部类

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        Button btn = (Button) findViewById(R.id.btn);
        //使用匿名内部类
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

③ 定义内部类

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        Button btn = (Button) findViewById(R.id.btn);       
        btn.setOnClickListener(listener);
    }

    class listener implements OnClickListener {

        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
        }
    }

}

④ 布局添加onClick的属性
xml布局:

   

Java代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);
        Button btn = (Button) findViewById(R.id.btn);
    }
    
    public void click(View v) {
        Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
    }   

}
4. 常见问题
  • 文字显示不全
    举个栗子:
 

如上所示,Button在设置字体时,如果控件大小限制,文字可能会出现被截取,无法完全展示的情况。出现这种情况有下面几种解决方案可供参考:
① 修改字体大小,但有时候还是无法达到预期效果;
② 不用Button控件,改用Textview控件;
③ 设置padding为0,取消Button控件自身的默认边距值;

xml布局:

Java代码:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp.width = 40;
lp.height = 30;
Button button = new Button(this);
button.setTextSize(11);
button.setPadding(0,0,0,0);
button.setLayoutParams(lp);
参考

Button官方文档,开启传送门

========== 相关推荐 ==========

Android shape属性大全


Android layer-list基本用法


Android selector属性说明


============================

你可能感兴趣的:(Android Button基本使用)