linearlayout 添加view后高度为0_产品之展现篇0开始的安卓之旅4

1570482dcb010cc5d703c7238381b66f.gif

ebe99ef2683baf247a1c281d474a4612.png

今天主要写安卓常用的一些控件,TextView,Button,EditText,ImageView,ProgressBar,AlertDialog,ProgressDialog。

新建项目UIDemo

TextView 显示文字

activity_main.xml如下

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">

    <TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Hello World!"android:gravity="center"android:textSize="24dp"android:textColor="#00ff00"
         />

LinearLayout>

LinearLayout是一种线性布局方式,后面在详细说明。  

android:id给当前控件定义了一个唯一标识符,android:layout_width和android:layout_height指定了控件的宽度和高度。宽度和高度可选值有match_parent和wrap_content,match_parent是当前控件的大小和父布局的大小一样。wrap_content表示让当前控件的大小能够刚好包含住里面的内容。  

android:text 控件显示的文字。  

 android:gravity="center"表示水平和垂直都居中。  

 android:textSize文字大小,android:textColor文字颜色。  

 运行效果如下  

d255fafb76464738ea8ec6fc36e2cc77.png

Button 按钮

xml 如下  

<Buttonandroid:id="@+id/butten"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Butten"android:textAllCaps="false"
        />

android:textAllCaps 系统会对Button中的所有英文字母自动进行大写转换,设置false就可以禁用这个属性。  

在MainActivity代码中添加按钮监听,代码如下

package com.datayang.uidemo;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button butten = findViewById(R.id.butten);
        butten.setOnClickListener(this);
    }
   
   //MainActivity 实现View.OnClickListener
   //可以把onClick写在外面
   @Override
   public void onClick(View view){
        switch (view.getId()){
            case R.id.butten:
                Toast.makeText(MainActivity.this,"单击了:",Toast.LENGTH_SHORT).show();
                   break;
            default:
                break;
        }
   }
}

执行如下 

ef7f3b9f0e1e5cf12a3fa6a533e1b419.png

EditText 输入框

xml如下  

<EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="提示信息"android:maxLines="2"
        />

android:maxLines限制最多2行,超过会向上滚动。 

结合按钮把填写的信息弹出,MainActivity代码如下

package com.datayang.uidemo;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
     private EditText editText;//text框

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

        editText = findViewById(R.id.edit_text);

        Button butten = findViewById(R.id.butten);
        butten.setOnClickListener(this);
    }
   
   //MainActivity 实现View.OnClickListener
   //可以把onClick写在外面
   @Override
   public void onClick(View view){
        switch (view.getId()){
            case R.id.butten:
                String inputText = editText.getText().toString();
                Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();
                   break;
            default:
                break;
        }
   }
}

执行结果如下

ffc8f60c21e60ab4de596d300bf52000.png

ImageView 图片

先在项目res目录下新建一个drawable-xhdpi,然后放两张图片,命名为,img_1和img_2.xml如下

<ImageViewandroid:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/img_1"
        />

我们可以利用按钮,来切换图片,MainActivity代码如下

package com.datayang.uidemo;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private ImageView imageView;

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button butten = findViewById(R.id.butten);
        butten.setOnClickListener(this);

        imageView = findViewById(R.id.image_view);
    }
   
   //MainActivity 实现View.OnClickListener
   //可以把onClick写在外面
   @Override
   public void onClick(View view){
        switch (view.getId()){
            case R.id.butten:
                imageView.setImageResource(R.drawable.img_2);
                break;
            default:
                break;
        }
   }
}

执行结果如下

cd55c18d312f07f8fd3c5f68d4b72829.png

ProgressBar 加载显示

xml如下

<ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content"
        />

点击按钮,让加载消失,代码如下

package com.datayang.uidemo;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
     private ProgressBar progressBar;//进度条

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button butten = findViewById(R.id.butten);
        butten.setOnClickListener(this);
        progressBar = findViewById(R.id.progress_bar);
    }
   
   //MainActivity 实现View.OnClickListener
   //可以把onClick写在外面
   @Override
   public void onClick(View view){
        switch (view.getId()){
            case R.id.butten:
                 //让进度条消失,可选值
                //visible表示控件是可见的,这个值是默认值
                //invisible表示控件不可见,但是它仍然占据着原来的位置和大小
                //gone则表示控件不可见,不再占用任何屏幕空间
                if(progressBar.getVisibility()==View.GONE){
                    progressBar.setVisibility(View.VISIBLE);
                }else{
                    progressBar.setVisibility(View.GONE);
                }
                break;
            default:
                break;
        }
   }
}

执行显示如下

f3f528feb98289fce75f7d392c3d3b47.png

还有一种长的加载框,xml如下

<ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"android:max="100"
        />

点击按钮使加载变长,代码改造如下

package com.datayang.uidemo;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
     private ProgressBar progressBar;//进度条

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button butten = findViewById(R.id.butten);
        butten.setOnClickListener(this);
        progressBar = findViewById(R.id.progress_bar);
    }
   
   //MainActivity 实现View.OnClickListener
   //可以把onClick写在外面
   @Override
   public void onClick(View view){
        switch (view.getId()){
            case R.id.butten:
                 //控制进度
                int progress = progressBar.getProgress();
                progress = progress+10;
                progressBar.setProgress(progress);
                break;
            default:
                break;
        }
   }
}

执行显示如下

41094c718ad825441b583a08f699a259.png

AlertDialog 弹出对话框

MainActivity 代码改造,主要改造是点击按钮处如下

@Override
   public void onClick(View view){
        switch (view.getId()){
            case R.id.butten:
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                dialog.setTitle("这是个提示框?");
                dialog.setMessage("信息信息信息");
                dialog.setCancelable(false);

                dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }

                });
                dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                });
                dialog.show();
                break;
            default:
                break;
        }
   }

执行结果,如下

50326ed2f2c2dc0d5f582e3e3186c15d.png

ProgressDialog 加载弹出框

也是MainActivity 代码改造,同样也是按钮点击处,代码如下

@Override
   public void onClick(View view){
        switch (view.getId()){
            case R.id.butten:
                ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setTitle("这是加载框");
                progressDialog.setMessage("加载...");
                //setCancelable 传入false,不能通过back键取消,当数据加载完成后
                //必须要调用ProgressDialog的dismiss方法,否者ProgressDialog一直存在
                progressDialog.setCancelable(true);
                progressDialog.show();
                break;
            default:
                break;
        }
   }

执行结果如下  

3ca09235538899b63ad76524f4d89883.png

好了,暂时就介绍到这

a2cae83b27d26cfab04a8553682f3659.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值