第一行代码(第三版)第四章总结

[第一行代码(第三版)]第四章总结

1. 常用控件

1.1 TextView

1.1.1 概念

TextView主要用来显示一段文本信息。

1.1.2 常用属性

  • layout_weight,leyout_height:指定控件的宽度和高度,可选值:match_parent,wrap_content和固定值。第一种是匹配父类容器的大小,第二种是根据内容自适应大小。单位一般用dp,这是一种与屏幕密度无关的尺寸单位,可以保证在不同手机上显示效果尽可能一致。

dp:是一种密度无关像素,对应于160dpi下像素的物理尺寸;
sp:是相同的基本单位,但它会按用户首选的文本尺寸进行缩放(属于缩放无关像素),因此在定义文本尺寸时应使用此计量单位(但切勿为布局尺寸使用此单位)。
(关于各种尺寸单位的区别,参考博客1)

  • gravity:用于指定文字的对齐方式,可选值:top,buttom,start,end,center等,并且可以使用|同时指定多个值。

1.2 Button

1.2.1 概念

Button为按钮控件,用于用户点击。

1.2.2 常用属性

  • textAllCaps:Button按钮中的文字都是默认全大写,如果需要保留原本的大小写格式,需要修改本属性为false。
  • setOnClickListener():设置按钮的点击事件。
 Button btn=findViewById(R.layout.activity_main.click_btn);
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //do sth
    }
});

1.3 EditText

1.3.1 概念

EditText用于用户输入文字信息,例如聊天软件中的发送消息功能。

1.3.2 常用属性

  • hint:当用户未输入时,文本框内显示提示信息。
  • maxLines:如果输入多行,则会显示很多行内容,显得比较丑,可以设置最大行数。

关于更多控件书中只是简单介绍使用,可以参考博客2

2. 布局

2.1 LinearLayout线性布局

2.1.1 概念

线性布局如名,控件按顺序排列。

2.1.2 重要属性

  • orientation:控件顺序从左往右或者从上往下,根据该属性设置。
  • layout_gravity:控件在布局中的对齐方式。
  • layout_weight:多个控件所占大小可以根据该值进行设置,结果根据比例进行分配。例如控件A该值为1,控件2该值为1,则两个控件平分大小,如果控件A设置了该值,另一个控件B未设置该值,而是使用了wrap_content,match_content或固定值,则首先计算控件B需要的大小,剩余的大小分配给A。(注意,如果控件B设置了match_content并且占据了整个屏幕,则A就不可见了)

2.2 RelativeLayout相对布局

2.2.1 概念

相对布局中,各个控件的位置可以设置相对父类容器的位置,也可以设置相对其他控件的位置。

2.2.2 常用属性

  • android:layout_above:让一个控件位于一个控件的上方。
  • android:layout_below:让一个控件位于一个控件的下方。
  • ndroid:layout_toLeftOf:让一个控件位于一个控件的左侧。
  • android:layout_toRightOf:让一个控件位于一个控件的右侧。
  • android:layout_alignParentLeft:和父布局的左对齐。
  • android:layout_alignParentTop:和父布局的上对齐。
  • android:layout_alignParentRight:和父布局的右对齐。
  • android:layout_alignParentBottom:和父布局的下对齐。
  • android:layout_centerInParent:和父布局的居中显示。

2.3 FrameLayout帧布局

2.3.1 概念

帧布局中,各个控件默认在左上角,后添加的控件会覆盖先添加的控件,并且通过layout_gravity属性来设置位置,由于使用场景较少并且十分简单,这里不过多介绍。

Tip1:多个布局文件可以嵌套,例如可以把页面分为标题栏,内容,菜单栏三个布局文件,然后在主文件中使用<include layout="@layout/XXX">来使用

Tip2:书中只介绍了上面3种布局,更多Android 4.0新加的布局,表格布局,网格布局可以参考博客3,以及最新的ConstraintLayout布局-约束布局,可以看本书作者的参考博客4

package com.example.myapplication; import android.os.Bundle; import android.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(this); replaceFragment(new RightFragment()); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.button: replaceFragment(new AnotherRightFragment()); break; default: break; } } private void replaceFragment(Fragment fragment){ FragmentManager fragmentMananger = getSupportFragmentManager(); FragmentTransaction transaction = fragmentMananger.beginTransaction(); transaction.replace(R.id.right_fragment,fragment); transaction.addToBackStack(null); transaction.commit(); } } ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505618961_586914.png) package com.example.myapplication; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(this); replaceFragment(new RightFragment()); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.button: replaceFragment(new AnotherRightFragment()); break; default: break; } } private void replaceFragment(Fragment fragment){ FragmentManager fragmentMananger = getSupportFragmentManager(); FragmentTransaction transaction = fragmentMananger.beginTransaction(); transaction.replace(R.id.right_fragment,fragment); transaction.addToBackStack(null); transaction.commit(); } } ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505619005_190177.png) 两种导入包都出现了错误,求大神解决。
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页