我正在尝试设计Layout
,就像这张图片一样:
我认为最好的方法是为每个项目使用LinearLayout
,我错了,因为它看起来像这样:
问题是ImageView
不在中间,我试图把它放在边缘,但是当我尝试在三星s2上启动这个APP时,它会弄乱Layout
然后我的Lg g3我在底部看到的ImageView
(没有边距)和s2我看到它在中间......
这是我的layout.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardElevation="5dp"
android:layout_margin="7dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/LinearImageView">
<ImageView android:id="@+id/image_holder"
android:layout_width="match_parent"
android:layout_height="100dp"
android:scaleType="fitXY" />
</LinearLayout>
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/LinearImageView"
android:background="@android:color/darker_gray"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/LinearTitulo"
android:layout_below="@+id/divider"
android:layout_marginLeft="5dp"
>
<TextView
android:id="@+id/info_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SOME TEXT HERE"
android:textSize="16sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/LinearPrice"
android:layout_marginLeft="5dp"
android:layout_below="@+id/LinearTitulo">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvPrice"
android:text="SOME TEXT HERE"
android:layout_below="@+id/info_text"/>
</LinearLayout>
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@mipmap/ic_launcher"
android:layout_marginRight="5dp"
android:layout_alignBottom="@+id/LinearPrice"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
我认为GridView
就是重点,我看到像AsymmetricGridView
这样的库,但它不是我需要的,因为你把它放在代码(java)中,我不想要它
我想这是一个GridView
,有两列,第一列有2行,第二列有一行,但我不知道这是否是最好的方法,你能引导我吗?
答案 0 :(得分:3)
这里的另一个布局没有与相对定位混淆。我在我的一个应用程序中使用了类似的布局,它工作正常,但你可能想根据自己的喜好进行调整;)
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="#000000" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="#000000" />
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/black" />
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_margin="10dp" />
</LinearLayout>
</android.support.v7.widget.CardView>
编辑:添加了输出图片
答案 1 :(得分:2)
试试这个:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="7dp"
app:cardElevation="5dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/LinearImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image_holder"
android:layout_width="match_parent"
android:layout_height="100dp"
android:scaleType="fitXY"/>
</LinearLayout>
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/LinearImageView"
android:background="@android:color/darker_gray"/>
<LinearLayout
android:id="@+id/bottomLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/divider">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="80">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text 1"
android:id="@+id/textView3"
android:textSize="40sp"
android:paddingLeft="30dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text2"
android:id="@+id/textView4"
android:textSize="20sp"
android:paddingLeft="30dp"/>
</LinearLayout>
<ImageView
android:layout_width="0dp"
android:layout_height="match_parent"
android:src="@drawable/ic_action_armchair"
android:layout_weight="20"/>
</LinearLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
答案 2 :(得分:1)
删除android:layout_alignBottom="@+id/LinearPrice"
并将android:layout_centerVertical="true"
添加到您的ImageView
答案 3 :(得分:1)
作为参考如何:
heroku:Build and Deploy with Docker
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#111">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textColor="#fff"
android:textSize="18sp"
android:text="TextView1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#fff"
android:padding="10dp"
android:textSize="18sp"
android:text="TextView2"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right">
<ImageView
android:layout_width="50sp"
android:layout_height="50sp"
android:layout_gravity="center"
android:background="@drawable/placeholder_loader"
/>
</LinearLayout>
</LinearLayout>