Android 自定义GridView项

Android 自定义GridView项,android,android-layout,gridview,android-linearlayout,android-gridview,Android,Android Layout,Gridview,Android Linearlayout,Android Gridview,如何创建如下所示的自定义GridView项 我写的布局图- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:o

如何创建如下所示的自定义GridView项

我写的布局图-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/round_corner_drawable">

<ImageView
    android:id="@+id/market_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:src="@drawable/default_image"/>

    <TextView

        android:id="@+id/nameTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Text 1"/>

    <TextView
        android:id="@+id/priceTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Text 2"/>
</LinearLayout>
在设备上运行之后,我得到的结果如下。 imageview下面的文本被裁剪,不可见。我还希望imageview位于布局上方,如上图所示。请帮忙

我正在使用的图像-


尝试为图像布局赋予权重=1:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/round_corner_drawable">

<ImageView
    android:id="@+id/market_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:src="@drawable/default_image"/>

    <TextView

        android:id="@+id/nameTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Text 1"/>

    <TextView
        android:id="@+id/priceTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Text 2"/>
</LinearLayout>


根据上述xml。

尝试为图像布局赋予权重=1:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/round_corner_drawable">

<ImageView
    android:id="@+id/market_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:src="@drawable/default_image"/>

    <TextView

        android:id="@+id/nameTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Text 1"/>

    <TextView
        android:id="@+id/priceTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Text 2"/>
</LinearLayout>


按照上面的xml。

尝试使用以下布局:

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

<View
    android:id="@+id/anchor"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_alignParentTop="true" />

<ImageView
    android:id="@+id/market_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/nameTV"
    android:layout_below="@+id/anchor"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/nameTV"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_above="@+id/priceTV"
    android:gravity="center_horizontal"
    android:text="Text 1" />

<TextView
    android:id="@+id/priceTV"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="5dp"
    android:gravity="center_horizontal"
    android:text="Text 2" />

</RelativeLayout>

尝试使用以下布局:

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

<View
    android:id="@+id/anchor"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_alignParentTop="true" />

<ImageView
    android:id="@+id/market_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/nameTV"
    android:layout_below="@+id/anchor"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/nameTV"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_above="@+id/priceTV"
    android:gravity="center_horizontal"
    android:text="Text 1" />

<TextView
    android:id="@+id/priceTV"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="5dp"
    android:gravity="center_horizontal"
    android:text="Text 2" />

</RelativeLayout>

或使用以下布局

<?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="match_parent"
android:weightSum="100"
android:orientation="vertical">

<ImageView
android:id="@+id/market_image"
android:layout_width="wrap_content"
android:layout_height=match_parent
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher"/>

<TextView

    android:id="@+id/nameTV"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginLeft="5dp"
     android:layout_weight="45"
    android:text="Text 1"/>

<TextView
    android:id="@+id/priceTV"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginLeft="5dp"
     android:layout_weight="45"
    android:text="Text 2"/>
</LinearLayout>

或使用以下布局

<?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="match_parent"
android:weightSum="100"
android:orientation="vertical">

<ImageView
android:id="@+id/market_image"
android:layout_width="wrap_content"
android:layout_height=match_parent
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher"/>

<TextView

    android:id="@+id/nameTV"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginLeft="5dp"
     android:layout_weight="45"
    android:text="Text 1"/>

<TextView
    android:id="@+id/priceTV"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginLeft="5dp"
     android:layout_weight="45"
    android:text="Text 2"/>
</LinearLayout>

我终于能够解决它了。 我写了下面的布局,以获得所需的输出

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<RelativeLayout
    android:layout_width="210dp"
    android:layout_height="240dp"
    android:background="@drawable/round_corner_drawable"
    android:layout_marginTop="15dp">

    <TextView

        android:id="@+id/nameTV"
        android:layout_above="@+id/priceTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Latin American Republic"/>

    <TextView
        android:id="@+id/priceTV"
        android:layout_alignParentBottom="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="65$"/>
</RelativeLayout>

<ImageView
    android:id="@+id/market_image"
    android:layout_width="190dp"
    android:layout_height="200dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:scaleType="fitXY"
    android:src="@drawable/default_marketplace"/>




</RelativeLayout>

我终于能够解决它了。 我写了下面的布局,以获得所需的输出

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<RelativeLayout
    android:layout_width="210dp"
    android:layout_height="240dp"
    android:background="@drawable/round_corner_drawable"
    android:layout_marginTop="15dp">

    <TextView

        android:id="@+id/nameTV"
        android:layout_above="@+id/priceTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="Latin American Republic"/>

    <TextView
        android:id="@+id/priceTV"
        android:layout_alignParentBottom="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:text="65$"/>
</RelativeLayout>

<ImageView
    android:id="@+id/market_image"
    android:layout_width="190dp"
    android:layout_height="200dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:scaleType="fitXY"
    android:src="@drawable/default_marketplace"/>




</RelativeLayout>


使用FrameLayout而不是LinearLayout我尝试使用FrameLayout,但我必须在imageview下方显示两个文本。使用FrameLayout而不是LinearLayout我尝试使用FrameLayout,但我必须在imageview下方显示两个文本。您尝试过我给出的第二种解决方案吗?您可以尝试将android:scaleType=“centerInside”放在图像视图中。你的形象有多高?我也试过第二种方法。在问题中添加图像,以便您可以检查它。此外,我还强制gridview只绘制两列,然后将gridview项设置为正方形,如问题中所述。您是否尝试过我给出的第二种解决方案?您可以尝试将android:scaleType=“centerInside”放在图像视图中。你的形象有多高?我也试过第二种方法。在问题中添加图像,以便您可以检查它。此外,我还强制gridview只绘制两列,然后将gridview项设置为正方形,如问题中所述