目录

  • TextView
  • Button
  • EditText
  • ImageView
  • ProgressBar
  • AlertDialog
  • ProgressDialog

 

Android控件中都有layout_width和layout_height两个属性,分别指定控件的高度和宽度。

这两个属性可选值有match_parent,fill_parent,wrap_content。其中match_parent和fill_parent的意义相同,官方推荐使用match_parent。

match_parent表示让当前控件的大小和父布局一样。

wrap_content表示让当前控件的大小能够刚好包住里面的内容。

当然你也可以对控件的宽和高指定一个固定的值,不过可能在不同手机屏幕的适配方面会出现问题。

 

 

一:TextView

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="24sp"
        android:textColor="#00ff00"
        android:text="显示一段文本内容" />
        <!--gravity对齐方式-->

常见控件

 

 

二:Button

<Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:text="Button"/>
    <!--系统会对Button中的所有英文字母自动进行大写转换,可以用textAllCaps禁止这一默认特性-->

常见控件

两种给按钮添加点击事件

第一种:

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                //在这里添加逻辑
            }
        });

第二种:

package com.example.testone;

import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//View视图,所有空间的基类或者父类


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);

    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //在这里添加逻辑
                break;
            default:
                break;
        }
    }
}

 

 

三:EditText

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="编辑框" />
    <!--hint指定一段提示性文本-->

常见控件

缺点:随着文字输入越多,因为高度是wrap_content,因此能包住里面的内容,不过这时候就很难看

常见控件

 

解决方法:

增加属性:android:maxLines="1"

这时候指定最大行数是一行,当输入的内容超过时,文本会向上滚动

 

 

结合Button运用,通过点击按钮获得EditText输入的内容

package com.example.testone;

import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//View视图,所有空间的基类或者父类

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);

        editText = (EditText) findViewById(R.id.editText);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //在这里添加逻辑
                //getText()获得输入的内容,toString()转换成字符串
                String nr = editText.getText().toString();
                Log.d("MainActivity",nr);
                break;
            default:
                break;
        }
    }
}

常见控件点击按钮后控制台打印信息

常见控件

 

 

四:ImageView

图片一般放这里

常见控件

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/renwu"/>

常见控件

 

可以通过点击按钮代码动态更换图片

package com.example.testone;

import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//View视图,所有空间的基类或者父类

    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        imageView = (ImageView) findViewById(R.id.imageView);
        button.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //在这里添加逻辑
                imageView.setImageResource(R.drawable.katon);
                break;
            default:
                break;
        }
    }
}

 

 

 

五:ProgressBar

<ProgressBar
        android:id="@+id/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

运行后会看到有一个圆形的进度条在旋转

常见控件

 

如何让进度条在数据加载完成时消失?

可以通过android:visibility指定,可选值有三种:visible,invisible和gone.

visible表示控件可见,这个是默认值;invisible表示控件不可见,但是它仍然占据着原来的位置和大小,可以理解控件变透明了;

gone表示控件不可见,而且不再占用任何屏幕空间。

我们还可以通过代码设置控件的可见性,使用setVisibility()方法,可以传入View.VISIBLE,View.INVISIBLE和View.GONE三种值

package com.example.testone;

import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//View视图,所有空间的基类或者父类

    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        progressBar = (ProgressBar) findViewById(R.id.bar);
        button.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //在这里添加逻辑
                if (progressBar.getVisibility()==View.GONE){
                    progressBar.setVisibility(View.VISIBLE);
                }
                else {
                    progressBar.setVisibility(View.GONE);
                }
                break;
            default:
                break;
        }
    }
}

通过不停点击按钮,进度条在显示和隐藏来回切换

 

另外,也可以给进度条指定不同的样式,不如水平进度条

style="?android:attr/progressBarStyleHorizontal"
//给进度条设置一个最大值
android:max="100"
package com.example.testone;

import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//View视图,所有空间的基类或者父类

    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        progressBar = (ProgressBar) findViewById(R.id.bar);
        button.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //在这里添加逻辑
                int progress = progressBar.getProgress();
                progress = progress+10;
                progressBar.setProgress(progress);
                break;
            default:
                break;
        }
    }
}

没点击一次按钮,进度条在原来基础上加10作为更新后的进度条,直到最大值为止

常见控件

常见控件

常见控件

 

 

 

六:AlertDialog

可以在当前的界面弹出一个对话框

package com.example.testone;

import android.content.DialogInterface;
import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//View视图,所有空间的基类或者父类

    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        progressBar = (ProgressBar) findViewById(R.id.bar);
        button.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //在这里添加逻辑
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                //设置标题
                dialog.setTitle("这是一个对话框");
                //设置内容
                dialog.setMessage("你确定要删除这些信息吗?");
                //可否用back键关闭对话框
                dialog.setCancelable(false);
                //调用setPositiveButton方法为对话框设置确定按钮的点击事件
                dialog.setPositiveButton("OK",new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
                //调用setNegativeButton方法设置取消按钮的点击事件
                dialog.setNegativeButton("Cancel",new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
                //将对话框显示出来
                dialog.show();
                break;
            default:
                break;
        }
    }
}

常见控件

 

 

 

七:ProgressDialog

和AlertDialog差不多,不过多一个进度条

package com.example.testone;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//View视图,所有空间的基类或者父类


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setTitle("这是是标题");
                progressDialog.setMessage("Loading...");
                progressDialog.setCancelable(true);
                progressDialog.show();
                break;
            default:
                break;
        }
    }
}

常见控件

注意:如果你在setCancelable()中传入的是false,表示对话框是不能用back键去掉的,这时候你要在代码做好控制,当数据加载完成后必须调用ProgressDialog的dismiss()方法来关闭对话框,否则对话框一直在。

相关文章:

  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-07-30
  • 2021-07-09
  • 2021-06-06
猜你喜欢
  • 2021-12-04
  • 2021-06-30
  • 2021-06-28
  • 2021-07-30
  • 2022-02-07
  • 2021-06-16
相关资源
相似解决方案