zoukankan      html  css  js  c++  java
  • 新浪微博布局学习——活用RelativeLayout

    本文转自博客园:原始出处:博客园:http://www.cnblogs.com

    正文

      一、效果图

        格子布局效果:

        (图一)

        居中正在加载的效果:

        (图二)

      二、实现代码

        2.1  实现 图一 效果代码

                <RelativeLayout android:id="@id/rlDigest"
                    android:background
    ="@drawable/panel_bg" android:layout_width="fill_parent"
                    android:layout_height
    ="100.0dip" android:layout_margin="10.0dip">
                    
    <TextView android:textSize="16.0sp" android:textColor="#ff7d899d"
                        android:gravity
    ="center_vertical" android:id="@id/tvAddress"
                        android:layout_width
    ="wrap_content" android:layout_height="wrap_content"
                        android:layout_marginLeft
    ="5.0dip" android:layout_marginTop="10.0dip"
                        android:text
    ="@string/userinfo_address"
                        android:layout_alignParentLeft
    ="true"
                        android:layout_alignParentTop
    ="true" />
                    
    <TextView android:textSize="16.0sp" android:textColor="#ff373737"
                        android:id
    ="@id/tvAddress_content" android:layout_width="wrap_content"
                        android:layout_height
    ="wrap_content" android:layout_marginLeft="10.0dip"
                        android:layout_toRightOf
    ="@id/tvAddress" android:layout_alignTop="@id/tvAddress" />
                    
    <View android:id="@id/vHDivider" android:background="@drawable/horizontal_separation_line_repeat"
                        android:layout_width
    ="fill_parent" android:layout_height="1.0dip"
                        android:layout_centerVertical
    ="true" />
                    
    <TextView android:textSize="16.0sp" android:textColor="#ff7d899d"
                        android:gravity
    ="center_vertical" android:id="@id/tvAccount_info"
                        android:layout_width
    ="wrap_content" android:layout_height="wrap_content"
                        android:text
    ="@string/account_info" android:layout_below="@id/vHDivider"
                        android:layout_alignLeft
    ="@id/tvAddress"
                        android:layout_alignParentBottom
    ="true" />
                    
    <TextView android:textSize="16.0sp" android:textColor="#ff373737"
                        android:gravity
    ="center_vertical" android:id="@id/tvAccount_info_content"
                        android:layout_width
    ="wrap_content" android:layout_height="wrap_content"
                        android:layout_marginLeft
    ="10.0dip" android:layout_marginBottom="12.0dip"
                        android:singleLine
    ="true" android:layout_toRightOf="@id/tvAccount_info"
                        android:layout_alignBottom
    ="@id/tvAccount_info" />
                
    </RelativeLayout>
                
    <RelativeLayout android:background="@drawable/panel_bg"
                    android:layout_width
    ="fill_parent" android:layout_height="130.0dip"
                    android:layout_margin
    ="10.0dip">
                    
    <View android:id="@id/vVDivider1" android:background="@drawable/vertical_separation_line_repeat"
                        android:layout_width
    ="1.0dip" android:layout_height="fill_parent"
                        android:layout_centerHorizontal
    ="true" />
                    
    <View android:id="@id/vHDivider2" android:background="@drawable/horizontal_separation_line_repeat"
                        android:layout_width
    ="fill_parent" android:layout_height="1.0dip"
                        android:layout_centerVertical
    ="true" />
                    
    <RelativeLayout android:id="@id/llAttention"
                        android:background
    ="@drawable/bg_panel_above_left"
                        android:clickable
    ="true" android:layout_width="wrap_content"
                        android:layout_height
    ="wrap_content" android:layout_toLeftOf="@id/vVDivider1"
                        android:layout_above
    ="@id/vHDivider2"
                        android:layout_alignParentLeft
    ="true"
                        android:layout_alignParentTop
    ="true">
                        
    <TextView android:gravity="center" android:id="@id/tvAttention_count"
                            android:layout_width
    ="fill_parent" android:layout_height="wrap_content"
                            android:layout_marginTop
    ="10.0dip" android:text="0"
                            android:layout_centerHorizontal
    ="true"
                            style
    ="@style/userinfo_panel_textview_count" />
                        
    <TextView android:gravity="center" android:id="@id/tvAttention"
                            android:layout_width
    ="fill_parent" android:layout_height="wrap_content"
                            android:text
    ="@string/attention" android:layout_below="@id/tvAttention_count"
                            android:layout_centerHorizontal
    ="true"
                            style
    ="@style/userinfo_panel_textview_title" />
                    
    </RelativeLayout>
                    
    <LinearLayout android:orientation="vertical"
                        android:id
    ="@id/rlWeibo" android:background="@drawable/bg_panel_above_right"
                        android:clickable
    ="true" android:layout_width="wrap_content"
                        android:layout_height
    ="wrap_content" android:layout_toRightOf="@id/vVDivider1"
                        android:layout_above
    ="@id/vHDivider2"
                        android:layout_alignParentTop
    ="true"
                        android:layout_alignParentRight
    ="true">
                        
    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                            android:id
    ="@id/tvWeibo_count" android:layout_width="fill_parent"
                            android:layout_height
    ="wrap_content" android:layout_marginTop="10.0dip"
                            android:text
    ="0" style="@style/userinfo_panel_textview_count" />
                        
    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                            android:id
    ="@id/tvTopic" android:layout_width="fill_parent"
                            android:layout_height
    ="wrap_content" android:text="@string/radio_button_topic"
                            style
    ="@style/userinfo_panel_textview_title" />
                    
    </LinearLayout>
                    
    <LinearLayout android:orientation="vertical"
                        android:id
    ="@id/llFans" android:background="@drawable/bg_panel_below_left"
                        android:clickable
    ="true" android:layout_width="wrap_content"
                        android:layout_height
    ="wrap_content" android:layout_toLeftOf="@id/vVDivider1"
                        android:layout_below
    ="@id/vHDivider2"
                        android:layout_alignParentLeft
    ="true"
                        android:layout_alignParentBottom
    ="true">
                        
    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                            android:id
    ="@id/tvFans_count" android:layout_width="fill_parent"
                            android:layout_height
    ="wrap_content" android:layout_marginTop="10.0dip"
                            android:text
    ="0" style="@style/userinfo_panel_textview_count" />
                        
    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                            android:id
    ="@id/tvFans" android:layout_width="fill_parent"
                            android:layout_height
    ="wrap_content" android:text="@string/fans"
                            style
    ="@style/userinfo_panel_textview_title" />
                    
    </LinearLayout>
                    
    <LinearLayout android:orientation="vertical"
                        android:id
    ="@id/llTopic" android:background="@drawable/bg_panel_below_right"
                        android:clickable
    ="true" android:layout_width="wrap_content"
                        android:layout_height
    ="wrap_content" android:layout_toRightOf="@id/vVDivider1"
                        android:layout_below
    ="@id/vHDivider2"
                        android:layout_alignParentRight
    ="true"
                        android:layout_alignParentBottom
    ="true">
                        
    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                            android:id
    ="@id/tvTopic_count" android:layout_width="fill_parent"
                            android:layout_height
    ="wrap_content" android:layout_marginTop="10.0dip"
                            android:text
    ="0" style="@style/userinfo_panel_textview_count" />
                        
    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                            android:id
    ="@id/tvTopic" android:layout_width="fill_parent"
                            android:layout_height
    ="wrap_content" android:text="@string/his_topics"
                            style
    ="@style/userinfo_panel_textview_title" />
                    
    </LinearLayout>
                
    </RelativeLayout>

          代码说明:

            2.1.1  第一个RelativeLayout为图一上的实现代码。注意使用了一个View,也就是一条横线,令其居中布局;"地 址:"的TextView通过layout_alignParentLeft和layout_alignParentTop令其在整个 RelativeLayout顶左顶上;"账号信息:"的TextView通过layout_below令其位于横线下 方,layout_alignLeft令其与"地址:"的TextView左边对齐,然后用layout_alignParentBottom让其居于容 器底部。

            2.1.2  第二个RelativeLayout为图一下的实现代码。关键是vVDivider1和vVDivider2,与3.1.1类似,画出了一个十字架的布局,然后分别用居左、居上、居下、居右等方式实现了该布局效果。

        2.2  实现 图二 效果代码

        <RelativeLayout android:id="@+id/rlpb"
            android:layout_width
    ="fill_parent" android:background="#ffeff0f4"
            android:visibility
    ="gone" android:layout_height="fill_parent"
            android:layout_weight
    ="1.0">
            
    <LinearLayout android:layout_centerInParent="true"
                android:layout_width
    ="wrap_content" android:layout_height="wrap_content">
                
    <ProgressBar android:id="@+id/prb"
                    style
    ="?android:attr/progressBarStyleSmallTitle"
                    android:layout_width
    ="wrap_content" android:layout_height="wrap_content" />
                
    <TextView android:text="@string/loadinfo"
                    android:layout_width
    ="wrap_content" android:layout_height="wrap_content" />
            
    </LinearLayout>
        
    </RelativeLayout>

           代码说明:

            主要是layout_centerInParent属性的应用,令其居于RelativeLayout的中间。使用的时候领ListView先隐藏,然后让这个布局显示并填充,用完在设置Visible为GONE即可。

      三、总结

        熟练掌握以下重要属性,并灵活运用:

        android:layout_centerInParent   居中布局
        android:layout_centerVertical    水平居中布局
        android:layout_centerHorizontal  垂直居中布局
        android:layout_alignParentTop    居于容器内顶部
        android:layout_alignParentBottom  居于容器内底部
        android:layout_alignParentLeft    居于容器内左边
        android:layout_alignParentRight    居于容器内右边

        android:layout_above       居于指定View的上方
        android:layout_below       居于指定View的下方

        android:layout_toRightOf      在指定View的右边
        android:layout_toLeftOf        在指定View的左边

        android:layout_alignTop      与指定View的Top一致

        为了方便大家测试效果,文章末尾提供了资源下载,不足的资源请自行在APK中提取。

        

      四、补充

        相关文章

          Android中文API(99)—— RelativeLayout

          关于RelativeLayout的一些看法

        资源下载

          Res.zip

  • 相关阅读:
    bzoj1318[spoj 744] Longest Permutation
    bzoj2146 Construct
    bzoj2448 挖油
    bzoj3961[WF2011]Chips Challenge
    bzoj4152[AMPPZ2014] The Captain
    AtCoder Regular Contest 076E Coneected?
    Codeforces 748D Santa Claus and a Palindrome
    bzoj3572[HNOI2014]世界树
    SQL SERVER 字段统一补0方法
    SSRS运行report builder报错 的解决方案
  • 原文地址:https://www.cnblogs.com/myphoebe/p/2314736.html
Copyright © 2011-2022 走看看