在带有边距的布局中使用带有 headers 的列表视图
Use list view with headers in a layout with margins
我刚开始学习一点 Android。我目前正在尝试将列表视图与 headers 部分一起使用。我在这个网站上找到了这个可重复使用的代码:
http://javatechig.com/android/listview-with-section-header-in-android
它使用两个布局文件:snippet_item1.xml和snippet_item2.xml。
结果如下所示:
我希望此页面距顶部有 100dp 的边距。我已尝试将 margin_top 和填充添加到两个 xml 文件,但我没有得到想要的结果。
你怎么看?
让我post回答这个问题。不过,我不知道 ListActivity
是否可行。
查看 http://developer.android.com/reference/android/app/ListActivity.html 了解更多详情。
ListActivity
将 ListView
添加到 ID 为 list
的布局。您可以尝试获取该列表并以编程方式添加边距。
@Override
public void onCreateView(...) {
// set stuff up
ListView lv = getListView();
// set margin to lv
}
以编程方式设置 padding/margin 有点棘手,因为您必须将像素作为参数传递,但您需要 dp。但是您可以使用 getResources().getDimensionPixelSize(R.style.youMarginStuffHere)
来处理它。只需将边距添加到您的 style.xml.
不是从 ListActivity 扩展,而是从一个简单的 Activity 扩展您的 class 并在那个 activity 中放置一个 ListView,您可以给边距和填充列表显示。只需使用您已经通过 ListView 创建的相同适配器。方法如下。
这是你的 activity 的布局文件,命名为 activity_list.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:marginTop="20sp"
android:marginBottom="10sp"
android:divider="@android:color/transparent"
android:id="@+id/listview"
android:padding="5sp"
android:dividerHeight="5.0sp"
></ListView>
</RelativeLayout>
现在在 Java 中创建一个 Activity。
public class MyListActivity extends Activity {
private ListView listView;
private MyAdapter myAdapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
this.listView = (ListView) findViewById(R.id.listview);
this.myAdapter = new MyAdapter(getApplicationContext());
//add whatever you want to add to your adapter
listView.setAdapter(myAdapter);
}
}
希望这能解决您的问题!
我刚开始学习一点 Android。我目前正在尝试将列表视图与 headers 部分一起使用。我在这个网站上找到了这个可重复使用的代码:
http://javatechig.com/android/listview-with-section-header-in-android
它使用两个布局文件:snippet_item1.xml和snippet_item2.xml。
结果如下所示:
我希望此页面距顶部有 100dp 的边距。我已尝试将 margin_top 和填充添加到两个 xml 文件,但我没有得到想要的结果。
你怎么看?
让我post回答这个问题。不过,我不知道 ListActivity
是否可行。
查看 http://developer.android.com/reference/android/app/ListActivity.html 了解更多详情。
ListActivity
将 ListView
添加到 ID 为 list
的布局。您可以尝试获取该列表并以编程方式添加边距。
@Override
public void onCreateView(...) {
// set stuff up
ListView lv = getListView();
// set margin to lv
}
以编程方式设置 padding/margin 有点棘手,因为您必须将像素作为参数传递,但您需要 dp。但是您可以使用 getResources().getDimensionPixelSize(R.style.youMarginStuffHere)
来处理它。只需将边距添加到您的 style.xml.
不是从 ListActivity 扩展,而是从一个简单的 Activity 扩展您的 class 并在那个 activity 中放置一个 ListView,您可以给边距和填充列表显示。只需使用您已经通过 ListView 创建的相同适配器。方法如下。 这是你的 activity 的布局文件,命名为 activity_list.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:marginTop="20sp"
android:marginBottom="10sp"
android:divider="@android:color/transparent"
android:id="@+id/listview"
android:padding="5sp"
android:dividerHeight="5.0sp"
></ListView>
</RelativeLayout>
现在在 Java 中创建一个 Activity。
public class MyListActivity extends Activity {
private ListView listView;
private MyAdapter myAdapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
this.listView = (ListView) findViewById(R.id.listview);
this.myAdapter = new MyAdapter(getApplicationContext());
//add whatever you want to add to your adapter
listView.setAdapter(myAdapter);
}
}
希望这能解决您的问题!