Доступ к представлению внутри линейного описания с помощью кода

#android

#Android

Вопрос:

У меня есть linearlayout, как я могу получить доступ к view внутри этого макета с помощью программирования.

Комментарии:

1. Это динамическое представление или статическое?

2. Какое представление? Можете ли вы опубликовать свой XML-макет и конкретизировать свой вопрос?

Ответ №1:

Конечно, скажите, есть ли у вас LineraLayout linearLayout , и в его xml у вас есть TextView что-то вроде

 <LinearLayout [...]>
    <TextView android:id="@ id/textView" [...] />
</LinearLayout>
  

затем вы можете получить к нему доступ TextView с помощью

 final TextView txt = (TextView)linearLayout.findViewById(R.id.textView);
  

Здесь у вас есть ваше LinearLayout, определенное в файле ресурсов xml.
Вы должны присвоить своему id атрибуту TextView , чтобы он был доступен непосредственно из вашего кода. Для этой цели там стоит android:id="@ id/textView" .

Ответ №2:

В XML-файле вам нужно будет присвоить представлению идентификатор..

 android:id="@ id/someRandomID"
  

Затем в вашем основном файле Java вы добавляете это:

 LinearLayout layout = (LinearLayout)findViewById(R.id.someRandomID);
  

Ответ №3:

 (([TYPE]) findViewById(R.id.[NAME]))
  

Например, установка текста на кнопке:

 ((Button) findViewById(R.id.my_button)).setText("New text");
  

Комментарии:

1. Что, если view является динамическим и не имеет идентификатора?

Ответ №4:

Предполагая, что у вас есть linearlayout с идентификатором «linear1», а внутри этого макета у вас есть ImageView с идентификатором «image1», вы можете выполнить следующее в вашем методе onCreate в вашем классе activity:

 public void onCreate(Bundle bundle)
{
  setContentView(R.layout.linear1);

  ImageView image = (ImageView) findViewById(R.id.image1);
}
  

Это очень простой пример, предполагающий, что вы устанавливаете linear1 в качестве основного макета вашей активности.