布局与控件(六)-TableLayout和VideoView

第7节 TableLayout

TableLayout顾名思义,就是像表格一样的布局。它是LinearLayout的子类,所以拥有TableLayout的所有属性。

7.1 TableLayout的行数

TableLayout需要与它的搭档TableRow配合使用,TableRow也是LinearLayout的子类,表示表格的每一行,例如一个表格有3行,它的布局文件就应该像这样,

<TableLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <TableRow/> <!--第一行-->
    <TableRow/> <!--第二行-->
    <TableRow/> <!--第三行-->

</TableLayout>

TableRow可以不用指定它的android:layout_heightandroid:layout_width属性(对于其它类型的布局来说,这两个属性是必须要设置的,不然编译器会提示错误),默认情况下,android:layout_heightwrap_content,android:layout_widthmatch_parent

7.2 TableLayout的列数

每一个TableRow中包含的子控件(或者子布局)的个数,就是表格的列数。如果各个TableRow中包含的子控件个数不相同,那么就以最多的个数为准,作为整个表格的列数。

例如下面的布局,

<TableLayout
   android:layout_height="match_parent"
   android:layout_width="match_parent">

   <TableRow >
       <Button android:text="C"/>
       <Button android:text="DEL"/>
       <Button android:text="."/>
       <Button android:text="+"/>
   </TableRow>

   <TableRow >
       <Button android:text="7"/>
       <Button android:text="-"/>
   </TableRow>

   <TableRow >
       <Button android:text="4"/>
       <Button android:text="5"/>
       <Button android:text="6"/>
   </TableRow>

   <TableRow >
       <Button android:text="1"/>
       <Button android:text="2"/>
       <Button android:text="3"/>
       <Button android:text="/"/>
   </TableRow>

   <TableRow >
       <Button android:text="0" />
   </TableRow>

</TableLayout>

效果如下,可以看到这是一个5*4的表格,有的行有2格、有的有3格、有的有4格,于是采用格数最多的作为表格的列数。这里因为屏幕空间比较大,并没有占据完整个屏幕。

7.3 TableLayout界面调整

7.3.1 表格的平分

很多时候,我们希望表格的每一行能够平均分配可用的空间,那么可以为每个TableRow设置android:layout_weight=1

<TableLayout
   android:layout_height="match_parent"
   android:layout_width="match_parent">

   <TableRow android:layout_weight="1">
       <Button android:text="C"/>
       <Button android:text="DEL"/>
       <Button android:text="."/>
       <Button android:text="+"/>
   </TableRow>
   <TableRow android:layout_weight="1">
       <Button android:text="7"/>
       <Button android:text="-"/>
   </TableRow>

   <TableRow android:layout_weight="1">
       <Button android:text="4"/>
       <Button android:text="5"/>
       <Button android:text="6"/>
   </TableRow>

   <TableRow android:layout_weight="1">
       <Button android:text="1"/>
       <Button android:text="2"/>
       <Button android:text="3"/>
       <Button android:text="/"/>
   </TableRow>

   <TableRow android:layout_weight="1">
       <Button android:text="0" />
   </TableRow>
</TableLayout>

表格的每一列能够平均分配可用的空间,那么可以为每个TableLayout添加android:stretchColumns="*",这样,剩余的空间就被拉伸平分了,

<TableLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:stretchColumns="*">
    ......
</TableLayout>

android:stretchColumns用来指定需要拉伸的单元格,*表示所有单元格。

也可以指定部分单元格拉伸,例如指定第2列赫第4列,

<TableLayout
   android:layout_height="match_parent"
   android:layout_width="match_parent"
   android:stretchColumns="1,3">

注意,可拉伸的单元格序号是从0开始;多个单元格,可以用逗号分隔开。

7.3.2 表格列的收缩

有的时候,如果一个单元格的内容过长,会影响到同一行其它列的显示效果,例如,

<TableLayout
   android:layout_height="match_parent"
   android:layout_width="match_parent">

   <TableRow android:layout_weight=1>
       <Button android:text="Cfdfdfdfdffdfdffdfdffdfdfdfdfdfdfddf"/>
       <Button android:text="DEL"/>
       <Button android:text="."/>
       <Button android:text="+"/>
   </TableRow>
   ......
</TableLayout>

如果对TableLayout使用了android:shrinkColumns,并指定可以收缩的列为0,那么这一列的内容就可以朝着下方伸展,

<TableLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:shrinkColumns="0">
    ......
</TableLayout>

注意,可收缩的单元格序号是从0开始;多个单元格,可以用逗号分隔开。

7.3.3 表格列的隐藏

要隐藏某一列也很容易,使用android:collapseColumns,将要隐藏的列的序号填入即可,例如,

<TableLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:collapseColumns="0">
   ......
</TableLayout>

可以看到,第一列已经被隐藏起来不见了。

注意,可收缩的单元格序号是从0开始;多个单元格,可以用逗号分隔开。

7.3.4 单元格的跨列

有时,希望一个按钮能够跨多列,可以使用android:layout_span属性,例如这里让按键0,跨两列

<TableLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent">
    ......
    <TableRow  android:layout_weight="1">
        <Button android:text="0"
            android:layout_span="2"/>
    </TableRow>
    ......
</TableLayout>

需要注意的是,TableLayout中的单元格并不能跨行合并显示。

第8节 VideoView

播放视频可以使用Android SDK提供的现成的控件VideoView。它是对media playersurface的封装,对于初次进行视频播放开发的开发者来说,使用VideoView是最简单和方便的,不用关注太多细节上的实现方式。

8.1 VideoView的使用

VideoView的使用,非常简单,

  1. 在布局文件中放置一个VideoView控件,

    <VideoView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
  2. 在Activity当中,获取布局文件中的VideoView,然后设置要播放的视频地址,
    mVideoView = (VideoView) findViewById(R.id.video_view);
    
    //使用视频的字符串路径
    mVideoView.setVideoPath(strPath);
    //使用视频的uri路径
    mVideoView.setVideoURI(uriPath);
    1. 使用字符串路径,视频的地址类似于:/storage/emulated/0/Video/【大自然】mothernature(蒋雯丽配音).mp4
    2. 使用uri路径;
  3. 使用VideoView提供的接口,控制视频播放的流程,
    //从头开始播放视频
    mVideoView.start();
    //暂停播放视频
    mVideoView.pause();
    //继续播放视频
    mVideoView.resume()
    //跳转到xxx毫秒处开始播放
    mVideoView.seekTo(xxx);

8.2 控制面板

还可以为VideoView添加控制面板-MediaController,这个面板集成了播放进度拖动、暂停、继续播放等功能,还可以自动隐藏或显示。

使用Android SDK自带的MediaController

MediaController controller= new MediaController(context);
mVideoView.setMediaController(controller);

如果VideoView有父布局,那么为它添加的MediaController就会附着在父布局的底部的。

因此为了界面美观,经常在布局文件中,将VideoView单独放到一个FrameLayout当中,并让它居中显示,

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <VideoView
        android:layout_gravity="center"
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

时间: 2024-10-15 08:28:38

布局与控件(六)-TableLayout和VideoView的相关文章

Android UI布局与控件(二)

一.View类的常用xml属性:[了解] ①.Android中所有的UI(用户界面)元素都是使用View和ViewGroup对象建立的 ②.View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象 ③.ViewGroup是一个包含多个的View和ViewGroup的容器,用来定义UI布局. ④.Android提供了一系列的View和ViewGroup的子类,开发者可以灵活地组合使用它们来完成界面布 局.界 面元素绘制和用户交互等工作 ⑤.开发者还可以选择性地继承一些系统提供的View,来自

Android UI布局与控件及API Guide学习(一)

一.Android学习API指南:[了解] 1. 应用的组成部分   App Components 1.1. 应用的基本原理    App Fundamentals 1.2. Activity      Activities活动 1.2.1. 片段    Fragments 1.2.2. 加载器     Loaders 1.2.3. 任务和返回堆    Tasks and Back Stack 1.3. Service服务   Services 1.3.1. 绑定服务     Bound Ser

布局与控件(五)-Toast吐司与布局的抽象标签merge include ViewStub

第5节 Toast 5.1 使用效果 Toast用来向用户弹出一个提示框,然后自动消失,就像这样, 面包机烤好面包后,就腾的一下把面包从面包机里弹出来.而这个控件显示时也像是从面包机里弹出来的,所以取了这个名字-Toast(吐司). 使用Toast显示消息的时候,即使启动它的Activity并没有显示在屏幕上,Toast提示的消息也会被显示到最前面,让用户看到.例如, Activity A正通过网络下载一个文件, 此时用户点击Home回到主界面,又启动了另一个应用的Activity B:现在Ac

布局与控件(一)——布局与控件的常用概念

第1节 布局与控件的常用概念 界面设计中的控件,就是我们常常看到的按钮 滑动条 文字显示区等等,它们就像房间里的家具,是界面设计的最小单位. 布局是一个可以容纳别的布局(或者控件)的容器.它就像是一个大的房间,房间里面可以放各种家具(控件),也可以再隔离成更多的房间(放入别的布局). 不过,两者有很多共同的地方,例如定义它们的大小.边距等等. 1.1 尺寸单位 在使用布局或控件时,有时需要指定它们的尺寸.安卓系统提供了三种单位: px:以像素为单位进行设置,屏幕上每一个点,就是一个像素,例如一部

android代码编写布局和控件

//创建线性linearlayout布局对象  LinearLayout ll = new LinearLayout(this);    //设置linearlayout布局方向  ll.setOrientation(LinearLayout.VERTICAL);    //得到布局或控件高度  int height = LinearLayout.LayoutParams.MATCH_PARENT;    //得到布局或控件宽度  int width = LinearLayout.LayoutP

07.移动先行之谁主沉浮----控件之轮流轰炸——布局类控件

如果移动方向有任何问题请参考===> 异常处理汇总-移动系列(点) 一.布局类控件 Grid.StackPanel.Canvas. VariableSizedWrapGrid 1.布局控件 - Grid 网格控件,网格布局: 相当于 HTML 中的 Table 标签: 但是注意 Table 更重要的是展示数据,而 Grid 则是专门为布局所生: 属性标记: Grid.RowDefinitions:行定义,元素类型 RowDefinition,必要属性 Height Grid.ColumnDefi

Android开发学习之路--UI之自定义布局和控件

新的一年已经开始了,今天已经是初二了,两天没有学习了,还是要来继续学习下.一般手机的title都是actionbar,就像iphone一样可以后退,可以编辑.这里自定义布局就来实现下这个功能,首先准备下三张图片,一张用来当作背景,两张分别表示后退和编辑.新建工程UICostomViewsTest,然后自动创建工程后,新建title.xml,编写代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearL

WPF界面布局——各种控件

Grid是最常用的动态布局控件,也是所有动态布局控件中唯一可按比例动态调整分配空间的控件. label : 标签,用来显示文本内容.可以为其他控件如文本框等添加一些描述性的信息. TextBox : 文本框,用于显示或编辑纯文本字符. Button:按钮,允许用户通过单击来执行操作.即可显示文本,又可显示图像.

获取 AlertDialog自定义的布局 的控件

AlertDialog自定义的布局 效果图: 创建dialog方法的代码如下: 1 LayoutInflater inflater = getLayoutInflater(); 2 View layout = inflater.inflate(R.layout.dialog, 3 (ViewGroup) findViewById(R.id.dialog)); 4 new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout