【问题标题】:Custom style listdivider [duplicate]自定义样式列表分隔符 [重复]
【发布时间】:2012-03-08 15:58:52
【问题描述】:

我正在尝试设置默认 ListView 列表分隔符的样式,使其两边都有空白边距。我已经尝试设置整个 ListView 的边距,但这并没有产生预期的结果。

我有什么:

我要做什么(注意分隔线两侧的边距):

最好的方法是什么?提前致谢!

【问题讨论】:

标签: android android-layout android-listview


【解决方案1】:

使用<include layout="@layout/divider" /> 和自定义布局。像这样:

ma​​in.xml

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

<ListView android:id="@+id/listview"
    android:layout_width="wrap_content"
    android:divider="@layout/divider"
    android:dividerHeight="3sp"
    android:layout_height="wrap_content" />
</LinearLayout>

divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient 
        android:startColor="#00000000"
        android:centerColor="#FFFFFF"
        android:endColor="#00000000" />
    <corners 
        android:radius="4dp" />
</shape>

AndroidlistviewdividerActivity.class

public class AndroidlistviewdividerActivity extends Activity {
    /** Called when the activity is first created. */
    private ListView lv;
    private String listview_array[] = { "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",
                                    "SEVEN", "EIGHT", "NINE", "TEN" };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lv = (ListView) findViewById(R.id.listview);
        lv.setAdapter(new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, listview_array));
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
                // TODO Auto-generated method stub
                 AlertDialog.Builder adb = new AlertDialog.Builder(
                        AndroidlistviewdividerActivity.this);
                 adb.setTitle("ListView OnClick");
                 adb.setMessage("Selected Item is = "
                    + lv.getItemAtPosition(arg2));
                 adb.setPositiveButton("Ok", null);
                 adb.show();       
            }
      });
    }
}

【讨论】:

  • 谢谢,这正是我想要的。但是,如果我将 ListView 分隔符设置为 @layout/divider 应用程序崩溃。有什么建议?我收到以下错误: 原因:org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag View
  • @Meatje:你有解决办法吗?
  • @Meatje:好的,我正在更新我的解决方案,这对我来说非常有用..
  • 感谢您的回复,但不,这不是我正在寻找的解决方案。该代码有效,但我一直在寻找渐变。我需要默认的 android 分隔线样式。
【解决方案2】:

我建议创建您自己的ListAdapter 并将其设置为您的ListView。然后在其getView 方法中,您可以以任何您想要的方式设置各个列表项的样式。

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 2016-06-05
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多