列表视图的曲线边框
我是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