2011-01-24 52 views

回答

60

你與該ID包括標籤分配給包括佈局的根視圖。 首先使用findViewByid獲取對該視圖的引用。然後,您可以在該特定視圖上調用findViewById以獲取對佈局中的View的引用。所以:

View myLayout = findViewById(R.id.cell1); // root View id from that link 
View myView = myLayout.findViewById(R.id.someinnerview); // id of a view contained in the included file 
+1

爲什麼這不是正確的答案! – 2017-06-02 04:38:45

2

你知道包含的id。你可以得到這個完整的元素,然後從那裏開始讓它的一個孩子開始。

0

其實include標籤包含您的根佈局中的所有元素。所以你可以隨時在你的活動上使用findViewById訪問它們。

假設您有一個alayout.xml其中有一個include佈局。現在在您的活動A之一onCreate內宣佈setContentView(R.layout.alayout)現在在您的包含版式中,您可能會有一個ID爲myBtn的按鈕。您可以訪問內部onCreate中,你可以訪問它,如果它是在主要佈局以同樣的方式:findViewById(R.id.myBtn)

12

所有你需要的是父視圖的id:

enter image description here

在這個例子中, LinearLayout是我想從包含的視圖中獲得的TextView的父項。

我現在可以這樣做:

View view = findViewById(R.id.include_title_layout); 
    TextView titleTV = (TextView) view.findViewById(R.id.newsTitleTextView); 
    titleTV.setText("Whatever"); 
0

我覺得你的意思是NavigationView。你可以通過這種方式訪問​​內部佈局:

NavigationView ngv= (NavigationView) findViewById(R.id.navigation_id); 
View innerview = ngv.getHeaderView(0); 
TextView user_view= (TextView)innerview.findViewById(R.id.nav_name); //any you need 
user_view.setText(user);