列表视图的曲线边框

我是android和java的新手,我需要在android中创建一个简单的应用程序。 我在这个活动中有一个活动页面。 这是我的活动页面

package com.tkcmu.dev;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;

import org.apache.http.client.ClientProtocolException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class tkcmu extends Activity {
    private ListView lv1;

    @Override
        public void onCreate(Bundle icicle)
        {
        super.onCreate(icicle);
        setContentView(R.layout.main);


        ArrayList<String> listItems = new ArrayList<String>();

        try {
            URL recentUrl = new URL(
                    "To some link");
            URLConnection tc = recentUrl.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream()));

            String line;
            while ((line = in.readLine()) != null) {
                JSONArray ja = new JSONArray(line);

                for (int i = 0; i < ja.length(); i++) {
                    JSONObject jo = (JSONObject) ja.get(i);
                    listItems.add(jo.getString("content"));
                }
            }

    }catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }catch (IOException e) {
                e.printStackTrace();

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


        lv1=(ListView)findViewById(R.id.ListView01);
        // By using setAdpater method in listview we an add string array in list.
        lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , listItems));
        }
}

和我的main.xml是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="10sp"
        android:layout_marginRight="10sp"
        android:layout_marginTop="10sp"
        android:layout_weight="1"
        android:background="@drawable/customshape"
        android:cacheColorHint="#FFFFFF"
        android:clickable="true"
        android:clipToPadding="true"
        android:dividerHeight="1px"
        android:drawSelectorOnTop="false"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:footerDividersEnabled="true"
        android:headerDividersEnabled="true"
        android:longClickable="true" />
</LinearLayout>

而且我也有一个可绘制的customshape.xml

 <shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="10dp" />
</shape>

我得到的结果与整个自定义列表部分得到弯曲,但我想要获得每一行有弯曲的背景。 我已经在这里发布了我的整个代码(不包括AndroidManifest.xml ),所以如果有人告诉我在这段代码中我需要更改哪些内容,那么将会很感激。 任何机构都有关于如何实施它的想法。


 android:background="@drawable/customshape" 

到listview row.xml文件的根视图,而不是将它应用到列表视图


我从来没有做过这个圆角,但我会尝试为列表提供一个自定义适配器。 自定义适配器将允许您指定为每个项目使用哪个视图。 在你的情况下,你可以尝试提供一个圆角边框(用形状XML定义)的视图。

要做到这一点,你会替换行lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , listItems));

使用实现getView()方法的BaseAdapter

有几百个关于如何做到这一点的教程,但这个似乎更详细。


我建议您使用自定义适配器,您可以将该形状设置为背景。 这在那里很容易实现。 但既然你是一个新手,这将是一个艰难的。 所以有些东西我不会推荐,但可能是一个解决方案:在android.R.layout.simple_list_item_1上按Ctrl + B。 这是由Android团队编写的原始列表视图XML。 所以你必须重写这个并在这里设置你的背景形状(你写的形状,将其设置为背景)。

链接地址: http://www.djcxy.com/p/5315.html

上一篇: Curved border for list view

下一篇: Custom ImageView with drop shadow