用于新闻Feed的Android TableLayout Design

时间:2015-12-04 15:33:44

标签: android android-layout tablelayout android-tablelayout

我目前正在Android应用程序中开发类似新闻Feed的活动(我对Android开发很新)。

The following picture展示了我想要实现的目标。 总结一下:

  • 新闻列表

  • 对于每条新闻,左栏显示图片(每条新闻的大小相同),右栏显示右侧气泡以显示链接文章的日期,标题和第一行。

后端通信很容易设置,我在一个单独的线程上收到一个新闻列表,并使用UI线程来更新视图。 不幸的是,查看格式对我来说并不容易。 我尝试了几种混合TableLayout& amp; RelativeLayouts。 不幸的是,这些解决方案都没有效率。

在这个阶段,我遇到了大于屏幕宽度(like in this picture

的行

为了构建我的布局,我使用2个XML&使用代码更新文本值和图片。

第一个XML包含TableLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp"
    android:id="@+id/tblFeed">

</TableLayout>

第二个XML包含表行模式:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="1"
    android:id="@+id/tblRow">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"  android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:padding="3dip"
        android:gravity="center"
        android:id="@+id/imgPin"
        android:src="@drawable/android_icon"/>
</RelativeLayout>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:padding="3dip"
    android:textColor="#000000"
    android:textSize="18sp"
        android:gravity="right"
    android:id="@+id/txtDate"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:padding="3dip"
    android:textColor="#000000"
    android:textSize="18sp"
    android:id="@+id/txtType"
    android:layout_below="@+id/txtDate"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:padding="3dip"
    android:textColor="#000000"
    android:textSize="18sp"
    android:id="@+id/txtTitle"
    android:layout_below="@+id/txtType"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:padding="3dip"
    android:textColor="#000000"
    android:textSize="18sp"
    android:id="@+id/txtDescription"
    android:layout_below="@+id/txtTitle"/>
</RelativeLayout>

我遇到了几个问题:

  • 图片不在行的中心
  • 第二列中的文字视图大于屏幕

我也想知道是否混合TableLayouts&amp; RelativeLayouts确实是实现这一目标的最佳方式。

你能告诉我吗?

1 个答案:

答案 0 :(得分:-1)

你不应该使用TableLayout。相反,通常使用RelativeLayot。对于那些有新闻#1和新闻#2的卡片,请使用CardView