0

我正在尝试创建一个片段。在片段中,我计划在它旁边放置一个文本视图,一个 Spinner 控件。我尝试使用此代码。但是 Spinner 总是放置在屏幕左侧的 textview 上。谁能建议可能是什么问题?

代码:

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,这意味着您对所有布局微调器和 textview 都使用相同的参数。

尝试对所有布局使用不同的布局参数

相对布局.LayoutParams lp

RelativeLayout.LayoutParams lptextview

RelativeLayout.LayoutParams lpspinner

对于他们所有人

如果您的问题得到解决,请将我的回答标记为正确

于 2012-11-02T10:26:28.797 回答