8

我对这个分隔符有疑问:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <padding android:left="10dip" android:right="10dip"/>
    <solid android:color="@color/listSeparator"/>
    <size android:height="1px" />
</shape>

我正在尝试在 listview 组件的左/右做一点边距/填充(使用相对它,而不是 ListView 对象)。然后,当我尝试这样说时...

getListView().setDivider(getResources().getDrawable(R.drawable.song_separator));

...它被直接忽略,放置一个完整的布局分隔符。

现在我不知道是什么问题,但我知道:

  • 我不能在所有 ListView 中设置边距,因为我想要 listHeader fill_parent
  • 我试图放置一个假边框,但是当我更改它的背景颜色时它看起来并不好看,给我一个分隔空间。

任何想法?

修改的

我最后的部分解决方案是放置一个 ImageView ,与父底部对齐。这是部分原因,它放在底部而不是原来的分隔器上。

如果有人能告诉我如何将 ImageView 放在分隔线的确切线上,我也会给他 +50。

4

2 回答 2

1

Quiroga 所以我的第一个赌注是通过将方法调用拆分为单独的行来使代码更易于调试。

ListView lview = getListView();
if (lview != null){
  Resources res = getResources();
  if (res != null) {
       Drawable dable = res.getDrawable(R.drawable.song_separator);
       if (dable != null){
           lview.setDivider(dable)
       }
  }
} else {
   //Log in some way that you have a problem.
}

我知道它看起来有点过于复杂,但这样你可以确保找到 Drawable 并且是正确的,然后正确分配给 ListView。

您可以尝试的另一件事是分配一个不同的可能特定于平台的分隔符,看看它是否正常工作。

如果您将其添加到您的 Java 项目中,您还可以尝试获取重新上线的 Android 源代码,您可以调试到平台类并深入调试平台代码。

因此,这并不是解决您问题的真正方法,但也许它可以帮助您找到解决方案。

于 2011-10-21T03:33:55.077 回答
1

将标头放在一个单独的文件中并以如下方式访问它:

公共类 AuditActivity 扩展 ListActivity {

Budget budget;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.audit);
    ListView lv = getListView();
    LayoutInflater infalter = getLayoutInflater();
    ViewGroup header = (ViewGroup) infalter.inflate(R.layout.header, lv, false);
    lv.addHeaderView(header);
    budget = new Budget(this);
    /*
    try {
        test = budget.getTransactions();
        showEvents(test);
    } finally {

    }
    */

// switchTabSpecial(); }

按照这个链接.......它有一个详细的信息,使用RelativeLayout而不是Linear One,我希望这会对你有所帮助。 Android:将静态标题添加到 ListActivity 的顶部

于 2011-10-26T14:12:46.490 回答