Android --- 布局结构属性(二)

布局细节

考虑兼容性: LinearLayout 因为有权重所以可以处理一些尺寸上的兼容, RelativeLayout 可以处理位置上的兼容

另外两个基本布局

TableLayout 继承 LinearLayout 的垂直布局, TableRow 继承 LinearLayout 的水平布局 ( 高版本有个 GridLayout)
AbsoluteLayout :绝对布局, android:layoutx android:layouty

布局技巧

<include />  加载其他布局,提高重用性

如:

定义了 head_layout.xml 布局描述页面标题,这时其他布局页面可以通过以下方式引入
<include android:id="@+id/head_view" layout="@layout/head_layout"/>
<merge/> 标签可以使用在根布局为 FrameLayout 的布局中实现合并根节点到窗口的提供的 FrameLayout 容器中减少一层布局,
也可以使用在 <include> 所加载的布局根节点上,可以实现合并加载的跟布局到目标布局上
如:
head_layout.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView
    android:id="@+id/tx_back"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginLeft="5dp"
    android:gravity="center_vertical"
    android:text=" 返回 "
    android:textColor="#ffffff" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_toRightOf="@id/tx_back"
    android:background="@drawable/ic_launcher"
    android:visibility="gone" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:gravity="center_vertical"
    android:text=" 标题 "
    android:textColor="#ffffff"
    android:textSize="24sp" />
</merge>

使用 include
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.xykj.relativelayoutdemo.MainActivity"
android:background="#55ff0000">
    <include layout="@layout/head_layout"/>
    <TextView
        android:id="@+id/tx_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="#ff0000"
        android:text="@string/hello_world" />
        ...
</RelativeLayout>

文本框
TextView: 显示文本处理文本效果的视图

android:gravity="center" 对齐方式
android:shadowColor="#000000" 阴影颜色
android:shadowRadius="5" 阴影范围
android:text="@string/my_tx" 设置文本内容
android:textColor="#ff0000" 文本颜色
android:textSize="24sp" 文本大小(单位为 sp )
android:textStyle="bold" 文本样式(粗体 斜体)
android:singleLine="true" 设置文本单行显示
android:ellipsize="marquee" 设置过长文本的显示方式(用省略号或者跑马灯)
android:marqueeRepeatLimit="marquee_forever"  设置跑马灯的循环次数
android:drawableLeft  文本左侧显示图标
android:drawableRight  文本右侧显示图标
android:drawableTop  文本顶部显示图标
android:drawableBottom  文本底部显示图标
android:drawableLeft="@drawable/ic_launcher"

在 Java 中操作布局中的视图

1 、需要在布局中针对要操作的视图添加 id
    <TextView
        android:id="@+id/m_tx001"
        ...
    />
2 、在 Activity 的 onCreate 中设置布局
    /**
    *  窗口被创建成功时触发的方法
    */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置窗口使用的布局
        setContentView(R.layout.activity_main);
        ...
    }
3 、设置布局之后,可以从布局中使用 findViewById(id) 加载视图对象
    // 可以从布局中找到视图对象
    TextView tx = (TextView)findViewById(R.id.m_tx001);
    // 改变文本框内容
    tx.setText(" 你好,这里是 Activity 中设置的显示内容 ");
    // 设置文本颜色
    tx.setTextColor(0x880000ff);

视图获取焦点
1 、设置触摸时得到焦点,每个视图都可以使用的基本属性

android:focusable="true"
android:focusableInTouchMode="true"

2 、让视图被选中,需要在 java 中控制

// 获取视图对象
TextView tv2 = (TextView) findViewById(R.id.m_tx002);
// 设置让视图被选中
tv2.setSelected(true);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值