【问题标题】:TableLayout styling each rowTableLayout 为每一行设置样式
【发布时间】:2013-05-28 05:28:17
【问题描述】:

我想在TableLayout 中设置 5 行以具有某种气泡轮廓。我想用弯曲的边缘和不同的阴影背景颜色来隔离每一行。是否可以使用TableLayout 完成此操作?目前我只有一个包含 3 行的基本表结构,每行只包含一个普通的TextView。感谢您的宝贵时间。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    这样的?

    row_blue_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
             <solid   android:color="#2ca4ea"/>
             <corners android:bottomRightRadius="5dp" 
                     android:bottomLeftRadius="5dp" 
                     android:topLeftRadius="5dp" 
                     android:topRightRadius="5dp" />                         
    
        </shape>
    </item>
    </layer-list>
    

    row_red_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
             <solid   android:color="#e3977d"/>
             <corners android:bottomRightRadius="5dp" 
                     android:bottomLeftRadius="5dp" 
                     android:topLeftRadius="5dp" 
                     android:topRightRadius="5dp" />                         
    
        </shape>
    </item>
    </layer-list>
    

    table_layout.xml

    <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">
    
    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*" 
        android:background="#373737"
        >
        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/row_red_bg"
            >
    
              <!-- First  -->
                <LinearLayout
                android:id="@+id/first_text"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1" >
    
                      <TextView
                        android:id="@+id/tvMyBooking"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:textColor="#ffffff"
                        android:gravity="center"
                        android:text="r11"
                        android:padding="5dp"
                         />
    
               </LinearLayout>
    
            <!-- Second  -->
                <LinearLayout
                android:id="@+id/second_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
    
                android:layout_weight="1"  >
    
                    <TextView
                        android:id="@+id/tvPrivate"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r12" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
               </LinearLayout>
    
              <!-- third  -->
                <LinearLayout
                android:id="@+id/third_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
    
                android:layout_weight="1" >
    
                    <TextView
                        android:id="@+id/tvPublic"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r13" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
    
               </LinearLayout>
    
    
              <!-- fourth  -->
                <LinearLayout
                android:id="@+id/fourth_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" 
                android:layout_weight="1" >
    
                    <TextView
                        android:id="@+id/tvAddBooking"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r14" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
    
               </LinearLayout>
    
        </TableRow>
    
         <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/row_blue_bg"
            >
    
              <!-- First  -->
                <LinearLayout
                android:id="@+id/first_text"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1" >
    
                      <TextView
                        android:id="@+id/tvMyBooking"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:textColor="#ffffff"
                        android:gravity="center"
                        android:text="r21"
                        android:padding="5dp"
                         />
    
    
    
    
               </LinearLayout>
    
            <!-- Second  -->
                <LinearLayout
                android:id="@+id/second_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
    
                android:layout_weight="1"  >
    
                    <TextView
                        android:id="@+id/tvPrivate"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r22" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
               </LinearLayout>
    
              <!-- third  -->
                <LinearLayout
                android:id="@+id/third_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
    
                android:layout_weight="1" >
    
                    <TextView
                        android:id="@+id/tvPublic"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r23" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
    
               </LinearLayout>
    
    
              <!-- fourth  -->
                <LinearLayout
                android:id="@+id/fourth_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" 
                android:layout_weight="1" >
    
                    <TextView
                        android:id="@+id/tvAddBooking"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r24" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
    
               </LinearLayout>
    
        </TableRow>
         <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/row_red_bg"
            >
    
              <!-- First -->
                <LinearLayout
                android:id="@+id/first_text"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1" >
    
                      <TextView
                        android:id="@+id/tvMyBooking"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:textColor="#ffffff"
                        android:gravity="center"
                        android:text="r31"
                        android:padding="5dp"
                         />
    
               </LinearLayout>
    
            <!-- Second  -->
                <LinearLayout
                android:id="@+id/second_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
    
                android:layout_weight="1"  >
    
                    <TextView
                        android:id="@+id/tvPrivate"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r32" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
               </LinearLayout>
    
              <!-- third  -->
                <LinearLayout
                android:id="@+id/third_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
    
                android:layout_weight="1" >
    
                    <TextView
                        android:id="@+id/tvPublic"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r33" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
    
    
               </LinearLayout>
    
    
              <!-- fourth  -->
                <LinearLayout
                android:id="@+id/fourth_text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" 
                android:layout_weight="1" >
    
                    <TextView
                        android:id="@+id/tvAddBooking"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="r34" 
                        android:textColor="#ffffff"
                        android:padding="5dp"
                        />
    
               </LinearLayout>
    
        </TableRow>
    
    </TableLayout>
    
    </LinearLayout>
    

    【讨论】:

    • 这些layer-lists 会进入布局文件夹还是我选择的任何一个?
    • @kabuto178 将图层列表放入可绘制文件夹中。您不能将其放入布局文件夹中。
    • @kabuto178 没关系,这也发生在我身上。如果我的回答对你有帮助,那就让它接受..:)
    【解决方案2】:

    是的,可以为表格布局的不同行创建单独的布局。

    试试这样的:

    <TableLayout
            android:orientation="vertical" 
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TableRow
                android:layout_width="match_parent"
                android:layout_marginTop="30dp"
                android:layout_height="wrap_content"
                android:gravity="center">
                <RelativeLayout             
                    android:id="@+id/dashboard1BtnMyOwn"
                    android:clickable="true"
                    android:background="@drawable/click_effect_dashboard"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    >
                    <ImageView
                        android:id="@+id/dashboard1ImgMyOwn"
                        android:layout_width="45dp"
                        android:contentDescription="@string/myOwned"
                        android:layout_height="45dp"
                        android:gravity="center"
                        android:layout_centerHorizontal="true"
                        android:src="@drawable/personal"
                        />
                    <TextView
                        android:id="@+id/dashboard1TxtMyOwn"
                    android:layout_width="95dp"
                        android:layout_height="wrap_content"
                        android:lines="2"
                        android:textSize="20sp"
                        android:gravity="center"
                        android:layout_below="@id/dashboard1ImgMyOwn"
                        android:text="@string/myOwned"
                        />
                </RelativeLayout>
                <TableRow/>
                ....
    

    为 TableRow 内的 RelativeLayout 使用自定义 Drawable 用于边框,例如:

    <?xml version="1.0" encoding="UTF-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
         android:shape="rectangle"> 
         <gradient android:startColor="@android:color/holo_blue_light" android:endColor="@android:color/holo_blue_light" 
                android:angle="270"/> 
    
        <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 
    </shape> 
    

    这应该是结果(设置您自己的图像):

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-11
      • 2019-07-31
      • 2018-03-09
      • 1970-01-01
      • 2021-08-26
      • 2021-07-04
      • 1970-01-01
      • 2018-07-25
      相关资源
      最近更新 更多