0
我正在用minSdk = 14編寫一個Android應用程序。我有一個RelativeLayout的活動,其中放置了一些視圖。當我按下此Activity中的按鈕時,我必須在此佈局中添加5個視圖:2個textview,2個editTexts和一個ImageView。我想這樣做是這樣的:Android RelativeLayout在API17之前添加規則
CustomTextView fromLabel = new CustomTextView(this);
RelativeLayout.LayoutParams paramsForFromLabel = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); //ширина, длина
paramsForFromLabel.addRule(RelativeLayout.BELOW, lastCounterId);
paramsForFromLabel.topMargin = 10;
fromLabel.setId(counterIds.get(5*counterMax));
fromLabel.setGravity(Gravity.CENTER);
fromLabel.setText(R.string.labelCommunalCounterFrom);
int newFromLabelId = fromLabel.getId();
EditText from = new EditText(this);
from.setInputType(InputType.TYPE_CLASS_NUMBER);
RelativeLayout.LayoutParams paramsForFrom = new RelativeLayout.LayoutParams(
(int) getResources().getDimension(R.dimen.number_width), ViewGroup.LayoutParams.WRAP_CONTENT);
paramsForFrom.addRule(RelativeLayout.BELOW, lastCounterId);
paramsForFrom.addRule(RelativeLayout.RIGHT_OF, fromLabel.getId());
from.setId(counterIds.get(5*counterMax+1));
int newFromFieldId = from.getId();
paramsForFromLabel.addRule(RelativeLayout.ALIGN_BASELINE, newFromFieldId);
CustomTextView toLabel = new CustomTextView(this);
RelativeLayout.LayoutParams paramsForToLabel = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
paramsForFromLabel.addRule(RelativeLayout.BELOW, lastCounterId);
paramsForToLabel.addRule(RelativeLayout.RIGHT_OF, from.getId());
paramsForFromLabel.topMargin = 10;
toLabel.setId(counterIds.get(5*counterMax+2));
toLabel.setGravity(Gravity.CENTER);
toLabel.setText(R.string.labelCommunalCounterTo);
int newToLabelId = toLabel.getId();
EditText to = new EditText(this);
to.setInputType(InputType.TYPE_CLASS_NUMBER);
RelativeLayout.LayoutParams paramsForTo = new RelativeLayout.LayoutParams(
(int) getResources().getDimension(R.dimen.number_width), ViewGroup.LayoutParams.WRAP_CONTENT);
paramsForTo.addRule(RelativeLayout.BELOW, lastCounterId);
paramsForTo.addRule(RelativeLayout.RIGHT_OF, toLabel.getId());
to.setId(counterIds.get(5*counterMax+3));
int newToFieldId = to.getId();
paramsForToLabel.addRule(RelativeLayout.ALIGN_BASELINE, newToFieldId);
ImageView dropCounter = new ImageView(this);
dropCounter.setId(counterIds.get(5*counterMax+4));
dropCounter.setImageResource(R.drawable.cancel_icon);
RelativeLayout.LayoutParams paramsForDrop = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
paramsForDrop.addRule(RelativeLayout.BELOW, lastCounterId);
paramsForDrop.addRule(RelativeLayout.RIGHT_OF, to.getId());
paramsForDrop.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
layout.addView(fromLabel, paramsForFromLabel);
layout.addView(from, paramsForFrom);
layout.addView(toLabel, paramsForToLabel);
layout.addView(to, paramsForTo);
layout.addView(dropCounter, paramsForDrop);
的問題是:對於第二視圖(EditText from
),該規則RIGHT_OF
被忽略。所有其他領域顯示良好。 接下來的問題是:我如何重寫視圖的規則?我有一個按照XML規定的按鈕LAYOUT_BELOW
規則。我怎樣才能以編程方式更改它?