0

フラグメントを作成しようとしています。フラグメントでは、その横にスピナーコントロールのテキストビューを配置する予定です。このコードを使ってみました。ただし、スピナーは常に画面左側のテキストビューの上に配置されます。誰かが問題になる可能性があることを提案できますか?

コード:

public class FragmentTest extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    RelativeLayout view = (RelativeLayout)inflater.inflate(R.layout.ll2, null);
    RelativeLayout lref = (RelativeLayout)view.findViewById(R.id.ll2ll);
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(lref.getLayoutParams());

    lp.addRule(RelativeLayout.ALIGN_LEFT);

    RelativeLayout rl = new RelativeLayout(getActivity());

    TextView tv = new TextView(getActivity());
    tv.setId(1);
    tv.setLayoutParams(lp); 
    tv.setText("My ");


    rl.addView(tv, lp);

    Spinner s = new Spinner(getActivity());
    lp.addRule(RelativeLayout.RIGHT_OF, tv.getId());
    s.setId(2);
    String currencyData[] = {"USD",
            "EUR","INR"
    };

    ArrayAdapter<Object> currencyAdapter; currencyAdapter = new ArrayAdapter<Object>(getActivity(), android.R.layout.simple_spinner_item, currencyData);
    currencyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s.setAdapter(currencyAdapter);

    rl.addView(s,lp);
    return rl;
}
}

XMLファイルは

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="fill_parent"
android:layout_marginLeft="10sp"
android:layout_marginRight="10sp"
android:layout_marginTop="10sp"
android:isScrollContainer="true"
android:orientation="horizontal" >

<RelativeLayout
    android:id="@+id/ll2ll"
    android:layout_width="140dp"
    android:layout_height="50dp"
    android:textSize="@dimen/font_size" />

</RelativeLayout>
4

2 に答える 2

2

ビューがXMLからインフレートされると、LayoutParams適切に取得されません。使ってみてくださいnew RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

于 2012-11-02T10:29:23.953 に答える
0

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(lref.getLayoutParams());

問題はこれです。すべてのレイアウトを追加したり、lpを変更したりするために同じレイアウトパラメータを使用することはできません。すべてのレイアウトを初期化した後にlpが使用されるため、すべてのレイアウトスピナーとテキストビューの両方に同じパラメーターを使用していることを意味します。

すべてのレイアウトに異なるレイアウトパラメータを使用してみてください

RelativeLayout.LayoutParams lp

RelativeLayout.LayoutParams lptextview

RelativeLayout.LayoutParams lpspinner

それらすべてのために

問題が解決した場合は、私の回答を正しいものとしてマークしてください

于 2012-11-02T10:26:28.797 に答える