如何将屏幕划分为2个相等的部分:一个带有图像,另一个带有textview?

时间:2015-05-26 22:27:54

标签: android android-layout

我正在制作一个Android新闻应用,当我或用户访问新闻列表时,每个新闻都将占据整个屏幕并分为两部分(50/50):第一部分将是图像和另一半是文本视图(标题,日期和文章)。一些应用程序正在使用相同的技巧。

我尝试了很多选项,但我无法让它们适合我的屏幕并获得我想要的内容。

正如您将看到的,我已经添加了layout_weight参数,但它根本没有任何区别。

任何人都知道吗?

这是我的xml文件:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:weightSum="1" >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/news_hockey2"
        android:adjustViewBounds="true" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="title"
        android:id="@+id/title"
        android:layout_marginTop="5dp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="date_of_pub"
        android:id="@+id/date_of_pub"
        android:layout_marginTop="5dp"
        android:layout_weight="0.1" />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="link"
        android:id="@+id/link"
        android:layout_marginBottom="25dp"
        android:layout_marginTop="5dp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="article"
        android:id="@+id/article"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="15dp" />

</LinearLayout>

4 个答案:

答案 0 :(得分:1)

您需要为要调整大小的所有视图设置高度为0dp。然后,按照您希望的比例为所有这些视图分配权重。例如,如果您希望屏幕的上半部分是屏幕高一半的图像,则您将该图像视图的权重设置为1,并为所有其他视图提供总重为1的权重并将其全部放入它们为0dp(在第二个线性布局中包装所有文本视图将使这更容易,您可以在布局上放置权重和0dp高度。

答案 1 :(得分:0)

我很无聊所以我只是为你写出来的。基本上你想要做的是在视图中创建两个视图。您的ImageView是一个视图,而您的LinearLayout是另一个视图。这两个视图进入屏幕视图,这是一个LinearLayout。每个视图的权重为1,使其等于页面的50%。可以调整内部LinearLayout中的所有其他视图。

pg_search_scope :fast_content_search,
                :against => :content,
                :using => {
                  dmetaphone: {
                    tsvector_column: 'tsvector_content_dmetaphone'
                  },
                  tsearch: {
                    dictionary: 'english',
                    tsvector_column: 'tsvector_content_tsearch'
                  }
                  trigram: {} # trigram does not use tsvectors
                }

答案 2 :(得分:0)

方向设置为水平的基本布局应包含两个子布局,每个布局的布局权重为50%,然后用您喜欢的任何内容填充这些视图。

答案 3 :(得分:0)

现在,要使用@ GabeSechan的建议正确,请将ImageView的权重设置为 4 ,将4 TextViews权重设置为 1

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="4"
        android:src="@drawable/news_hockey2"
        android:adjustViewBounds="true"
    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="title"
        android:id="@+id/title"
        android:layout_marginTop="5dp"
    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="date_of_pub"
        android:id="@+id/date_of_pub"
        android:layout_marginTop="5dp"
    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="link"
        android:id="@+id/link"
        android:layout_marginBottom="25dp"
        android:layout_marginTop="5dp"
    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="article"
        android:id="@+id/article"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="15dp"
    />
</LinearLayout>