【问题标题】:how to give listView this shadow style?如何给 listView 这种阴影样式?
【发布时间】:2026-01-23 09:40:01
【问题描述】:

我需要给列表视图添加阴影效果。

下面是我想要的图片。

scerrnshot

我的主要活动布局:

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

<include layout="@layout/windows_title"
    android:id="@+id/include" />

<ListView
    android:layout_below="@+id/include"
    android:layout_width="wrap_content"
    android:id="@+id/listView"
    android:layout_alignParentLeft="true"
    android:background="#e4e3e6"
    android:clickable="false"
    android:divider="#9f9b9b"
    android:dividerHeight="2dp"
    android:focusableInTouchMode="true"
    android:choiceMode="singleChoice"
    android:layout_height="wrap_content"
    android:paddingRight="5dp"
    android:smoothScrollbar="true" />
 </RelativeLayout>

和我从代码动态设置的文本视图

<?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:paddingTop="10dip"
    android:paddingBottom="2dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="15dp"
    android:minHeight="50dp"
    android:textAlignment="center"
    android:textColor="#1e1d1d"
    android:textStyle="bold|italic"
    android:foregroundGravity="center_vertical|center_horizontal"
    android:paddingLeft="15dp" />

以及我设置列表视图和文本视图的代码

 ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.mytextview, mainList);
 listView.setAdapter(adapter);

请帮忙。谢谢

【问题讨论】:

  • 可以使用card view.give 提升卡片来完成

标签: android android-layout listview textview android-styles


【解决方案1】:

build.gradle

dependencies {
    // CardView
    compile 'com.android.support:cardview-v7:23.3.+'
}

xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="3dp"
        card_view:cardCornerRadius="4dp">


        <TextView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:foregroundGravity="center_vertical|center_horizontal"
            android:minHeight="50dp"
            android:paddingBottom="2dip"
            android:paddingLeft="15dp"
            android:paddingTop="10dip"
            android:textAlignment="center"
            android:textColor="#1e1d1d"
            android:textSize="15dp"
            android:textStyle="bold|italic" />


    </android.support.v7.widget.CardView>

</LinearLayout>

希望这对你有帮助。你可以改变高度的大小

android:elevation="3dp"

【讨论】:

  • 对不起,我是安卓新手。在您的示例中,我的列表视图在哪里?
  • 这是您创建 textview 的动态代码的list_item.xml。列表视图将保留在您的activity.xml 中。
【解决方案2】:

将 TextView 放在 CardView 中。那不是阴影效果,它是 CardView。还要为其添加一些边距。

如果您不熟悉 CardView,此 link 可能会对您有所帮助。

此外,在 CardView 中插入 TextView 后,您将无法直接使用 ArrayAdapter 来设置您的 ListView。因此,您必须创建一个自定义适配器。您可以查看link

【讨论】:

    【解决方案3】:

    将此添加到您的文本视图android:elevation="4dp"

    【讨论】: