2015-11-17 33 views
0

我试图设计一个Layout至极是这样的形象:定制的GridView

enter image description here

我认为最好的办法是使用LinearLayout每个项目,我错了,因为它看起来像这样:

enter image description here

而且问题是ImageView,是不是在中间,我试图把它的利润,但是当我TR y以启动此应用在三星S2惹它的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

这是一个利斯tView,自定义的行:http://developer.android.com/training/improving-layouts/optimizing-layout.html –

回答

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> 

编辑:输出

enter image description here

+0

您可以发布输出吗? –

+0

ImageView的大小是有争议的。您不需要宽度为40dp的图像,以使设备的屏幕宽度为500dp(例如)。 –

+0

的确,尽管OP的ImageView更小。布局可以容纳更大/更小的尺寸,并且如果它们的累积高度 mjp66

1

删除android:layout_alignBottom="@+id/LinearPrice"并添加android:layout_centerVertical="true"到您的ImageView

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> 

Rendering

+0

你使用的API 17,对不对? –

+0

它实际上是API 23 ... API会成为一个问题吗? –

+0

我正在使用minsdk15 –

1
加入PIC

这个怎么样作为参考:

enter image description here

<?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> 
+0

我想图像中心之间的两个texviews –

+0

它不在最后,因为我张贴 –

+0

布局是类似的 你想要的图像放置动态地在TextView之间不给大小? –