0

内の各アイテムに対してが作成されるdatabase呼び出しを使用してレイアウトを作成しました。は必要に応じて作成され、設定方法もわかりましたが、すべてが同じ位置に配置され、最後に作成されたものだけにアクセスできるように互いに重なり合っています。外観を作成するための私のコードは次のようになります。buttondatabasebuttonslayout_widthlayout_heightbuttonsbuttonbuttons

Button bt = new Button(this);
bt.setText("Button Title");
bt.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
linerLayout.addView(bt);

ボタンを生成した後のアクティビティは次のようになります。

重なっているボタン

ボタンに使用できる各メソッドを調べましたが、位置を定義するものが見つかりませんでした。私はちょうど次の方法について考えました:

bt.layout(l, t, r, b);

しかし、それをどのように使用するか正確にはわからず、この問題を解決するためのより簡単な方法があるかもしれないと考えました。回避策を知っている人はいますか?!


変更されたコード

「チェンドロン」で説明したようなレイアウトパラメータを設定してみました。xmlファイル内に相対レイアウトがあります:

<RelativeLayout
        android:id="@+id/llActOver"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2" >        
</RelativeLayout>

生成されたボタンを次のようにフォーマットしました。

Button bt = new Button(context);
bt.setText(c.getString(iDef));
fontClass.setFont(bt);
//RelativeLayout placeholder = new RelativeLayout(context);
RelativeLayout.LayoutParams  layoutParam = 
           new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
                                           LayoutParams.WRAP_CONTENT);
if(rowCount < 1){
    layoutParam.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    rowCount++;
}else{
    layoutParam.addRule(RelativeLayout.ALIGN_PARENT_TOP, lastButtonId);
}

lastButtonId = bt.getId();
//placeholder.addView(bt, layoutParam);
        
linearLayout.addView(bt, layoutParam);

ループの最後にボタンIDを保存して、次のラウンドで最後のボタンIDにアクセスできるようにします。また、コードのコメント部分が示すように、新しいボタンごとに新しい相対レイアウトを作成しようとしましたが、新しいレイアウトがなくても何も起こらず、すべてのボタンが重なっています。

4

2 に答える 2

0

相対レイアウトを使用して、最初のボタンを親の上部に揃えることができます。次に、各ボタンを前のボタンの下部に揃えます。

使用する:

params.addRule(RelativeLayout.ALIGN_PARENT_TOP);

その後:

params.addRule(RelativeLayout.BELOW,ID-Of-Previous-Button);

また、チェックアウトしてください:http: //developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html

于 2012-12-16T23:08:14.727 に答える
0

私はついに問題を解決しましたが、レイアウトタイプの可能な組み合わせをそれぞれ試すだけでした。XMLファイル内にLinearLayoutを定義する必要があり、属性android:orientation="vertical"が手頃な価格であることがわかりました。以前に設定された他のすべてのパラメーターは重要ではありませんでした。

これで、xmlファイルのScrollView内にLinearLayoutができました。

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="2" >

    <LinearLayout
        android:id="@+id/llActOver"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:orientation="vertical">

    </LinearLayout>
</ScrollView>

そして、Javaデータベース内に、データベース内の各行にボタンを作成し、そのテキストとフォントを設定して、ロードされたレイアウトに追加する次のコードがあります。

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {

    Button bt = new Button(context);
    bt.setText(c.getString(iDef));
    fontClass.setFont(bt);
    linearLayout.addView(bt);
}

そしてここに結果のスクリーンショットがあります:

ここに画像の説明を入力してください

同じ問題を抱えている他の誰かが、私がこの説明をしている限り、心配する必要はないでしょう。

于 2012-12-20T18:42:01.427 に答える