目錄
約束佈局
1.TextView用法
android:ellipsize="end" //內容不能完全顯示時,在末尾以省略號顯示
android:lines="3" //文本只能顯示三行
Drawable:是“可以繪製的東西”的一般抽象。 大多數情況下,您將使用Drawable作爲繪製事物到屏幕上的資源的類型; Drawable類提供了一個通用的API來處理可能採取各種形式的底層視覺資源。 與視圖不同,Drawable沒有任何接收事件或與用戶交互的功能。
app——>res——>drawable——>new——>drawable resource file 命名爲border_style
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:color="#f0f" android:width="2sp" ></stroke>
<corners android:radius="4sp"></corners>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--約束佈局-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
tool:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="微 信"
android:textSize="20sp"
android:gravity="center"
android:drawableTop="@mipmap/wx1"
android:layout_marginLeft="20sp"
android:layout_marginTop="20sp">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv2"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintTop_toTopOf="@+id/tv1"
android:text="電 話"
android:textSize="20sp"
android:gravity="center"
android:layout_marginLeft="20sp"
android:drawableTop="@mipmap/tx1">
</TextView>
<TextView
android:layout_width="150sp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="20sp"
android:lines="1"
android:ellipsize="end"
android:text="textviewlalalalalalala"
android:textSize="20sp"
android:textStyle="bold|italic"
android:background="@drawable/border_style">
</TextView>
</androidx.constraintlayout.widget.ConstraintLayout>
2.Button點擊事件
①在Button指定onCLick事件
在MainActivity.java中添加方法。
首先添加兩個包
import android.view.View;
import android.widget.Button;
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<!--約束佈局-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
tool:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="微 信"
android:textSize="20sp"
android:gravity="center"
android:drawableTop="@mipmap/wx1"
android:layout_marginLeft="20sp"
android:layout_marginTop="20sp">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv2"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintTop_toTopOf="@+id/tv1"
android:text="電 話"
android:textSize="20sp"
android:gravity="center"
android:layout_marginLeft="20sp"
android:drawableTop="@mipmap/tx1">
</TextView>
<TextView
android:id="@+id/tv3"
android:layout_width="150sp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="20sp"
android:lines="1"
android:ellipsize="end"
android:text="textviewlalalalalalala"
android:textSize="20sp"
android:layout_marginTop="50sp"
android:textStyle="bold|italic"
android:background="@drawable/border_style">
</TextView>
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/tv3"
app:layout_constraintLeft_toLeftOf="@+id/tv3"
android:text="OK"
android:textSize="20sp"
android:onClick="onClick">
</Button>
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/bt1"
app:layout_constraintLeft_toRightOf="@id/bt1"
android:text="NO"
android:textSize="20sp"
android:onClick="onClick">
</Button>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private Button bt1,bt2;
private int btnumber=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.bt1);
bt2 = findViewById(R.id.bt2);
}
public void onClick(View v) { //通過View確定哪一個控件
switch (v.getId()) {
case R.id.bt1:
//可以來回進行切換
if(bt1.getText().toString().equals("OK")) {
bt1.setText("OK id clicked.");
bt1.setTextSize(10); // 單位是sp
}
else {
bt1.setText("OK");
bt1.setTextSize(20); // 單位是sp
}
break;
case R.id.bt2:
if(bt2.getText().toString().equals("NO")) {
bt2.setText("NO id clicked.");
bt2.setTextSize(10); // 單位是sp
}
else {
bt2.setText("NO");
bt2.setTextSize(20); // 單位是sp
}
break;
}
}
}
②匿名類方法添加事件
匿名類方法需要多次構造匿名函數,比較麻煩。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<!--約束佈局-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
tool:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="微 信"
android:textSize="20sp"
android:gravity="center"
android:drawableTop="@mipmap/wx1"
android:layout_marginLeft="20sp"
android:layout_marginTop="20sp">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv2"
app:layout_constraintLeft_toRightOf="@+id/tv1"
app:layout_constraintTop_toTopOf="@+id/tv1"
android:text="電 話"
android:textSize="20sp"
android:gravity="center"
android:layout_marginLeft="20sp"
android:drawableTop="@mipmap/tx1">
</TextView>
<TextView
android:id="@+id/tv3"
android:layout_width="150sp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv1"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="20sp"
android:lines="1"
android:ellipsize="end"
android:text="textviewlalalalalalala"
android:textSize="20sp"
android:layout_marginTop="50sp"
android:textStyle="bold|italic"
android:background="@drawable/border_style">
</TextView>
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/tv3"
app:layout_constraintLeft_toLeftOf="@+id/tv3"
android:text="OK"
android:textSize="20sp"
android:onClick="onClick">
</Button>
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/bt1"
app:layout_constraintLeft_toRightOf="@id/bt1"
android:text="NO"
android:textSize="20sp"
android:onClick="onClick">
</Button>
//下面兩個控件沒有點擊事件
<Button
android:id="@+id/bt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/bt1"
app:layout_constraintLeft_toLeftOf="@+id/bt1"
android:text="YES"
android:textSize="20sp">
</Button>
<Button
android:id="@+id/bt4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/bt3"
app:layout_constraintLeft_toRightOf="@id/bt3"
android:text="Ignore"
android:textSize="20sp">
</Button>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private Button bt1,bt2,bt3,bt4;
private int btnumber=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.bt1);
bt2 = findViewById(R.id.bt2);
bt3 = findViewById(R.id.bt3);
bt4 = findViewById(R.id.bt4);
//匿名類 不方便太麻煩了
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bt3.getText().toString().equals("YES")) {
bt3.setText("YES id clicked.");
bt3.setTextSize(10); // 單位是sp
}
else {
bt3.setText("YES");
bt3.setTextSize(20); // 單位是sp
}
}
});
bt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bt4.getText().toString().equals("Ignore")) {
bt4.setText("Ignore id clicked.");
bt4.setTextSize(10); // 單位是sp
}
else {
bt4.setText("Ignore");
bt4.setTextSize(20); // 單位是sp
}
}
});
}
public void onClick(View v) { //通過View確定哪一個控件
switch (v.getId()) {
case R.id.bt1:
//可以來回進行切換
if(bt1.getText().toString().equals("OK")) {
bt1.setText("OK id clicked.");
bt1.setTextSize(10); // 單位是sp
}
else {
bt1.setText("OK");
bt1.setTextSize(20); // 單位是sp
}
break;
case R.id.bt2:
if(bt2.getText().toString().equals("NO")) {
bt2.setText("NO id clicked.");
bt2.setTextSize(10); // 單位是sp
}
else {
bt2.setText("NO");
bt2.setTextSize(20); // 單位是sp
}
break;
}
}
}
③實現接口
製作動圖一直不成功,頭大... 早睡身體好,所以還是不做了,趕緊整理完
MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button bt1,bt2,bt3,bt4;
private int btnumber=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = findViewById(R.id.bt1);
bt2 = findViewById(R.id.bt2);
bt3 = findViewById(R.id.bt3);
bt4 = findViewById(R.id.bt4);
//匿名類 不方便太麻煩了
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(bt3.getText().toString().equals("YES")) {
bt3.setText("YES id clicked.");
bt3.setTextSize(10); // 單位是sp
}
else {
bt3.setText("YES");
bt3.setTextSize(20); // 單位是sp
}
}
});
//bt3.setOnClickListener(new View.OnClickListener() {
// private int num =0;
// @Override
// public void onClick(View v) {
// bt3.setText("確定"+String.valueOf(num++));
// bt3.setTextSize(20);
// }
//});
bt4.setOnClickListener(this);
}
public void click(View v) { //通過View確定哪一個控件
switch (v.getId()) {
case R.id.bt1:
//可以來回進行切換
if(bt1.getText().toString().equals("OK")) {
bt1.setText("OK id clicked.");
bt1.setTextSize(10); // 單位是sp
}
else {
bt1.setText("OK");
bt1.setTextSize(20); // 單位是sp
}
break;
case R.id.bt2:
if(bt2.getText().toString().equals("NO")) {
bt2.setText("NO id clicked.");
bt2.setTextSize(10); // 單位是sp
}
else {
bt2.setText("NO");
bt2.setTextSize(20); // 單位是sp
}
break;
}
}
public void onClick(View v) {
if(bt4.getText().toString().equals("Ignore")) {
bt4.setText("Ignore id clicked.");
bt4.setTextSize(10); // 單位是sp
}
else {
bt4.setText("Ignore");
bt4.setTextSize(20); // 單位是sp
}
}
}
終於搞完了,最近時間規劃太差了,執行力也不夠高,反思反思...