Как управлять программно сгенерированными TextViews
Я ценю вашу помощь, если кто-то может предоставить мне решение. У меня два вопроса:
1- У меня есть кнопка, которая генерирует Params и TextView каждый раз, когда я нажимаю на нее. Я устанавливаю переменные для textview "textnew" и параметра "lptxt". Однако я могу управлять только последним сгенерированным текстом, шрифтом, размером шрифта, удалением... и т. Д. Есть ли способ установить автоматический идентификатор, и я могу вспомнить его в других методах? Я пробовал isSelected, isTouched, hasFocus и другие, но ничего не получалось.
2- Как я могу вернуть свой TextView обратно, как это было после установки границ? Допустим, я установил границы для TextView с радиусом 10dp и красным цветом. но при касании TextView границы изменяются на радиус 1 дп, как указано в drawable/corners.
Спасибо
Вот мой код
RelativeLayout rel0 = (RelativeLayout) findViewById(R.id.rel0);
По щелчку:
textnew = new TextView(MainActivity.this);
lptxt = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
lptxt.addRule((RelativeLayout.CENTER_HORIZONTAL));
lptxt.addRule((RelativeLayout.CENTER_VERTICAL));
lptxt.addRule((RelativeLayout.CENTER_IN_PARENT));
textnew.setLayoutParams(lptxt);
rel0.addView(textnew);
rel0.bringChildToFront(textnew);
rel0.bringToFront();
textnew.setText(edittextdialog.getText().toString());
OnTouch:
case MotionEvent.ACTION_DOWN: {
textnew.setBackgroundResource(R.drawable.borders);
textnew.isSelected();
break;
}
Кстати я работаю над API 11
Заранее спасибо,
3 ответа
Я нашел решение этой проблемы:
Я раздул вид на ACTION_UP, где я могу изменить размер текста, цвет, шрифт и даже удалить его. Изменения происходят непосредственно в выбранном текстовом представлении с проблемой.
Спасибо, ребята, за участие.
Вот мой код:
case MotionEvent.ACTION_UP: {
LayoutInflater lifirst = LayoutInflater.from(MainActivity.this);
View lifirstpv = lifirst.inflate(R.layout.infirst, null);
final TextView editfirst = TextView)lifirstpv.findViewById(R.id.editfirst);
final TextView deletefirst = (TextView)lifirstpv.findViewById(R.id.deletefirst);
pop = new PopupWindow(
lifirstpv,RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
pop.setOutsideTouchable(true); pop.setTouchable(true);
deletefirst.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rel0.removeView(teext);
pop.dismiss();
return true;
}
});
использование
setTag
на вашеTextView
и использоватьfindViewWithTag
чтобы получить нужный вам вид.сбросить все обратно
ACTION_UP
Например, вы генерируете 5 TextView
List<TextView> list = new ArrayList<TextView>();
for(int i=0;i<5;i++){
TextView textView = generateTextView();
list.add(textView);
rel0.addView(textView);
}
метод генерации TextView
public TextView generateTextView(){
TextView textnew = new TextView(MainActivity.this);
...
return textnew;
}
тогда вы можете контролировать текстовые представления в списке
textview использует относительные layoutparams, если вы используете тот же lptxt
layoutparams. текстовые представления будут в той же позиции, вы можете увидеть только последний