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オブジェクトではなく、その上に相対的なものを使用しています)。で、こんな風に並べてみると・・・

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

... それは直接無視され、完全なレイアウト セパレータが配置されます。

今、私は何が問題なのかわかりませんが、私はそれを知っています:

  • listHeader fill_parent が必要なため、すべての ListView にマージンを入れることはできません
  • 偽の境界線を配置しようとしましたが、背景色を変更してセパレータースペースを配置すると見栄えがよくありません。

何か案が?

変更された

私の最後の部分的な解決策は、 ImageView を親の bottom の横に配置することです。これは、元の仕切りではなく、底に置く部分的な原因です。

その ImageView を仕切りの正確な行に配置する方法を誰かが教えてくれたら、私も彼に +50 を与えます。

4

2 に答える 2

1

ヘッダーを別のファイルに入れ、次のようにアクセスします。

public class 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(); }

このリンクをたどってください.......詳細な情報があります。Linear Oneの代わりにRelativeLayoutを使用してください。これがお役に立てば幸いです。 Android: ListActivity の先頭に静的ヘッダーを追加する

于 2011-10-26T14:12:46.490 に答える
1

キロガなので、私の最初の賭けは、メソッド呼び出しを個々の行に分割することで、コードをよりデバッグしやすくすることです。

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 に適切に割り当てられていることを確認できます。

別のプラットフォーム固有のセパレーターを割り当てて、それが適切に機能するかどうかを確認することもできます。

また、オンラインに戻った Android ソース コードを手に入れてみてください。それを Java プロジェクトに追加すると、プラットフォーム クラスにデバッグし、プラットフォーム コードに深くデバッグすることができます。

したがって、これは実際の問題の解決策ではありませんが、解決策を見つけるのに役立つかもしれません.

于 2011-10-21T03:33:55.077 に答える