2016-11-09 56 views
1

我试图建立这个自定义行对我的ListView。通过Photoshop中的魔法在这里就是我试图完成:定制行的列表视图

enter image description here

但是当我跑我的列表视图,它是走出这样的:

enter image description here

任何人的帮助我弄清楚我在做什么错误的观点?

这里是我的row.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:padding="5dp"> 

    <!-- ListRow Left sied Thumbnail image --> 
    <LinearLayout 
     android:id="@+id/thumbnail" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true"> 

     <ImageView 
      android:id="@+id/list_image" 
      android:layout_width="64dp" 
      android:layout_height="64dp" 
      android:layout_alignParentRight="true" 
      android:background="@color/COLOR_GREY" /> 
    </LinearLayout> 

    <!-- Item Name --> 
    <TextView 
     android:id="@+id/txtItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:text="Item Name" 
     android:textColor="#040404" 
     android:textSize="15dip" 
     android:textStyle="bold" 
     android:typeface="sans" /> 

    <!-- progress count --> 
    <TextView 
     android:id="@+id/txtProgress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/thumbnail" 
     android:layout_alignLeft="@+id/thumbnail" 
     android:text="Item Name" 
     android:textColor="#040404" 
     android:textSize="15dip" 
     android:textStyle="bold" 
     android:typeface="sans" /> 

    <!-- Retry button --> 
    <Button 
     android:id="@+id/btnRetry" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/txtItemName" 
     android:layout_toRightOf="@id/txtItemName" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="5dp" 
     android:text="Retry" /> 

    <!-- Delete button --> 
    <Button 
     android:id="@+id/btnDelete" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/btnRetry" 
     android:layout_toRightOf="@id/btnRetry" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="5dp" 
     android:text="Delete" /> 

    <!-- ProgressBar --> 
    <ProgressBar 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_below="@id/txtItemName" 
     android:layout_alignLeft="@id/txtItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/progressBarItem" /> 

</RelativeLayout> 
+0

首先,'RelativeLayout'不使用“orientation”,LinearLayout',那么当你引用访问它的ID,当你不使用'+'符号的观点,它只是用来创建一个新的ID。所以首先我会解决这个问题。而你使用的是全宽与制作等元素出现在屏幕 –

回答

1

这主要是因为做你的画面布局,只需要以使它们看起来更好地与按钮来改变。

在RelativeLayout的,你不需要使用方向 和文字使用SP的代替

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/row" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" 
    android:gravity="center_vertical"> 

<!-- ListRow Left sied Thumbnail image --> 

<ImageView 
    android:id="@+id/list_image" 
    android:layout_width="64dp" 
    android:layout_height="64dp" 
    android:layout_centerVertical="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    app:srcCompat="@mipmap/ic_launcher" /> 

<!-- Item Name --> 
<TextView 
    android:id="@+id/txtItemName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/list_image" 
    android:layout_toEndOf="@+id/list_image" 
    android:text="Item Name" 
    android:textColor="#040404" 
    android:textSize="15dip" 
    android:textStyle="bold" 
    android:typeface="sans" /> 

<!-- progress count --> 
<TextView 
    android:id="@+id/txtProgress" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:text="100" 
    android:textColor="#040404" 
    android:textSize="15sp" 
    android:textStyle="bold" 
    android:typeface="sans" /> 

<!-- Retry button --> 
<Button 

    android:id="@+id/btnRetry" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@id/btnDelete" 
    android:layout_toStartOf="@+id/btnDelete" 
    android:text="Retry" /> 

<!-- Delete button --> 
<Button 
    android:id="@+id/btnDelete" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:text="Delete" /> 

<!--&lt;!&ndash; ProgressBar &ndash;&gt;--> 
<ProgressBar 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_below="@id/txtItemName" 
    android:layout_toLeftOf="@+id/txtProgress" 
    android:layout_toStartOf="@+id/txtProgress" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/list_image" 
    android:layout_toEndOf="@+id/list_image" 
    android:progress="100" 
    android:id="@+id/progressBarItem" /> 

你可以找到其他的技巧如何与布局工作做小部分布局并在stackoverflow中搜索它们,然后你可以学习如何做更大的布局。因为之前你确实需要将一些组件包装到线性布局中,但现在使用Android Studio 2.2,您可以使用ConstraintLayout

+0

对不起,使用你的布局现在什么都没有。 –

+0

我检查了设计页面,它的工作原理。你怎么试试它? – aleksandrbel

0

为什么你使用里面LinelarLayout ImageView的?

检查:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp"> 

    <!-- ListRow Left sied Thumbnail image --> 

    <ImageView 
     android:id="@+id/list_image" 
     android:layout_width="64dp" 
     android:layout_height="64dp" 
     android:layout_alignParentLeft="true" 
     android:background="@color/COLOR_GREY" /> 

    <!-- Item Name --> 
    <TextView 
     android:id="@+id/txtItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/list_image" 
     android:layout_toRightOf="@id/list_image" 
     android:text="Item Name" 
     android:textColor="#040404" 
     android:layout_marginLeft="10dp" 
     android:textSize="15sp" 
     android:textStyle="bold" 
     android:typeface="sans" /> 

    <!-- progress count --> 
    <TextView 
     android:id="@+id/txtProgress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="5dp" 
     android:layout_alignBottom="@id/list_image" 
     android:text="Item Name" 
     android:textColor="#040404" 
     android:textSize="15sp" 
     android:textStyle="bold" 
     android:typeface="sans" /> 


    <!-- Delete button --> 
    <Button 
     android:id="@+id/btnDelete" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/btnRetry" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="5dp" 
     android:text="Delete" /> 

    <!-- Retry button --> 
    <Button 
     android:id="@+id/btnRetry" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/txtItemName" 
     android:layout_toLeftOf="@id/btnDelete" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="5dp" 
     android:text="Retry" /> 

    <!-- ProgressBar --> 
    <ProgressBar 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_alignBottom="@id/list_image" 
     android:layout_toRightOf="@id/list_image" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="5dp" 
     android:layout_toLeftOf="@id/txtProgress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/progressBarItem" /> 

</RelativeLayout> 

另外,不要忘记,TEXTSIZE应在SP

如果要更改按钮大小 - 只需更换:

android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

,并把您的自定义宽度和高度在DP一样:

android:layout_width="25dp" 
    android:layout_height="25dp" 
+1

,并记住,你必须为不同屏幕尺寸的新布局ImageView的布局,因为你选择设置一个固定的宽度和高度 –

+0

@AhmadAlsanie是的,谢谢!) –

+0

对不起,你用什么布局现在看来。 –