如何为ListView添加阴影效果?

3
我需要给我的列表视图添加阴影效果。
以下是我想要的效果图。 截图 我的主活动布局:
<?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>

我正在从代码中动态设置的TextView

<?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" />

以下是我设置ListView和TextView的代码:

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

请帮忙,谢谢。

可以使用卡片视图来完成。给卡片添加高度。 - skydroid
3个回答

1
将您的TextView放置在CardView中。那不是阴影效果,而是CardView。还要添加一些边距。
如果您不熟悉CardView,此链接可能会有所帮助:link
此外,在将TextView插入CardView后,您将无法直接使用ArrayAdapter设置ListView。因此,您需要创建自定义适配器。您可以查看此链接:link

1
将以下内容添加到您的TextView中:android:elevation="4dp"

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"

抱歉,我是 Android 的新手。在你的示例中,我的 ListView 在哪里? - Sagar Chaudhari
这是 list_item.xml,您可以在其中创建 textview 的动态代码。列表视图将保留在您的 activity.xml 中。 - skydroid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接