0

そうです、これは私がしばらくの間いじっていた奇妙な問題です。うまくいけば、皆さんが私の注意を引くことができる何かを見逃しているかもしれません!

LinearLayoutsビューを使用して間隔を追加し、重みを定義すると(プロジェクトの他の場所で機能する方法)、消えているように見えます。

custom Dialog(ダイアログを拡張する)があります。私は垂直LinearLayoutを返すonCreate()メソッドを使用します。setContentView(generateDialog())

LinearLayoutには、4つのカスタムカテゴリボタン(LinearLayouts)の1行、並べ替えボタン(LinearLayouts)の1行、およびダイアログの残りの部分にデータを入力し、押されたボタンに基づいて更新する1つのListViewの3つの要素があります。

すべてが機能し、正常に動作しています。スペーサー方式を使用してボタンを均等に配置しようとする場合を除きます。

Dialog.java

LinearLayout catBtns = new LinearLayout(context);
        catBtns.setOrientation(LinearLayout.HORIZONTAL);
        catBtns.setBackgroundResource(R.drawable.btn_cat_gradient_bg);
        catBtns.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

        catBtns.addView(space(1));
        cat1Btn = new CatButton(context,this,act,"CAT1");
        catBtns.addView(cat1Btn);
        catBtns.addView(space(1));
        cat2Btn = new CatButton(context,this,act,"CAT2");
        catBtns.addView(cat2Btn);
        catBtns.addView(space(1));
        cat3Btn= new CatButton(context,this,act,"CAT3");
        catBtns.addView(cat3Btn);
        catBtns.addView(space(1));
        cat4Btn = new CatButton(context,this,act,"CAT4");
        catBtns.addView(cat4Btn);
        catBtns.addView(space(1));

space()メソッド:

private View space(int space) {
    View view = new View(context);
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(0,0);
    p.weight = space;
    view.setLayoutParams(p);
    return view;
}

私を混乱させているのは、プロジェクト全体でこのメソッドを使用していて、各ボタンの間にスペーサーを追加すると、カテゴリLinearLayoutが完全に消える理由がわからないことです。

並べ替えボタンにも同じ手法を使用していますが、完全に機能します。同じボタンのわずかに異なるバージョンを使用して、プロジェクトの別の部分で同じ手法を使用します(ただし、onClickListenerと他のいくつかのものはわずかに異なるため、これらは異なるクラスファイルです)

誰か手がかりがありますか?

4

1 に答える 1

0

これをXMLでビルドしようとしましたが、正常に機能します。LayoutParams考えられる違いは、ボタンに何も設定しないことです。すべてのボタンに対してそのようなことを試してください。

cat1Btn = new CatButton(context,this,act,"CAT1");
catBtns.addView(cat1Btn, new LinearLayout.LayoutParams(0,0));
于 2013-01-10T11:56:01.487 に答える