1.实现点击过后按钮里文本的改变和按钮的不可点击
1.xml配置文件
>
<Button
android:id="@+id/bt_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录"
android:textColor="#ff0000"
android:textSize="25sp"
android:background="#0000ff"
android:tag="1"
/>
<Button
android:id="@+id/bt_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="完成"
android:layout_below="@+id/bt_login"
android:layout_marginTop="20dp"
android:enabled="false"
/>
<Button
android:id="@+id/bt_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑"
android:layout_alignTop="@+id/bt_done"
android:layout_alignRight="@+id/bt_login"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="显示的文本"
android:textColor="@drawable/text_color"
/>
2.实现具体按钮操作
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//boolean isnormal=true;
Button done;
Button edit;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
done=findViewById(R.id.bt_done);
edit=findViewById(R.id.bt_edit);
btn=findViewById(R.id.bt_login);
//给按钮添加点击事件
btn.setOnClickListener(this);
done.setOnClickListener(this);
edit.setOnClickListener(this);
done.setOnClickListener(view->{
edit.setEnabled(true);
done.setEnabled(false);
});
edit.setOnClickListener(view->{
edit.setEnabled(false);
done.setEnabled(true);
});
}
public void onClick(View view) {
System.out.println("点击了");
//使用的时候转化为对应的子类类型
Button btn=(Button)view;
if(btn.getId()==R.id.bt_login){
if(btn.getTag().equals("1")){
btn.setText("退出");
btn.setTag("0");
}else {
btn.setText("登录");
btn.setTag("1" );
}
}
}
}
3.注意
按钮的点击事件 通常接受一个参数:view
当按钮被点击 系统接受这个事件
并把这个事件回调给监听者
把当前被点击的按钮作为参数传递过去
Button ImageView
注意:使用的时候 必须转化为对应的类型
不建议使用
2.实现按钮形状的颜色形状的设计
1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="分享"
android:enabled="true"
android:textColor="@drawable/text_color"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="显示的文本"
android:textColor="@drawable/color"
/>
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:enabled="true"
android:background="@drawable/shape_rectangle"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/buttonshapeandcolor"
android:enabled="true"
/>
</LinearLayout>
corners:圆角的大小
solid:填充颜色
stroke:边框颜色 宽度
gradient;渐变色 UI-拟物化-扁平化设计
padding:内间距
2.shape模块
<shape xmlns:android="http://schemas.android.com/apk/res/android">
android:shape="rectange">
<stroke android:color="@color/colorAccent"
android:width="1dp"/>
<corners
android:radius="15dp"/>
<solid
android:color="@color/colorAccent"
/>
<gradient android:startColor="#ff0000"
android:centerColor="#00ff00"
android:endColor="#0000ff"
android:gradientRadius="50dp"
android:type="sweep"
/>
<padding
/>
</shape>
3.text模块
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--配置是有先后顺序的
默认的状态必须放在后面
如果放在前面,优先匹配一旦匹配上了 后面的设置就无效了
-->
<!--按下状态的颜色 pressed-->
<item android:color="#ff0000"
android:state_pressed="true"/>
<!--无效 无法点击的颜色enable-->
<item android:color="#00ff00"
android:state_enabled="false"/>
<!--默认状态-->
<item android:color="#000000" />
</selector>