1 page.title= 2 page.tags=view,viewgroup 3 @jd:body 4 5 <div id="qv-wrapper"> 6 <div id="qv"> 7 <h2> </h2> 8 <ol> 9 <li><a href="#write">XML </a></li> 10 <li><a href="#load">XML </a></li> 11 <li><a href="#attributes"></a> 12 <ol> 13 <li><a href="#id">ID</a></li> 14 <li><a href="#layout-params"> </a></li> 15 </ol> 16 </li> 17 <li><a href="#Position"> </a></li> 18 <li><a href="#SizePaddingMargins">, </a></li> 19 <li><a href="#CommonLayouts"> </a></li> 20 <li><a href="#AdapterViews"> </a> 21 <ol> 22 <li><a href="#FillingTheLayout"> </a></li> 23 <li><a href="#HandlingUserSelections"> </a></li> 24 </ol> 25 </li> 26 </ol> 27 28 <h2>Key </h2> 29 <ol> 30 <li>{@link android.view.View}</li> 31 <li>{@link android.view.ViewGroup}</li> 32 <li>{@link android.view.ViewGroup.LayoutParams}</li> 33 </ol> 34 35 <h2> </h2> 36 <ol> 37 <li><a href="{@docRoot}training/basics/firstapp/building-ui.html"> 38 </a></li> </div> 39 </div> 40 41 <p> . <a href="{@docRoot}guide/components/activities.html"></a> <a href="{@docRoot}guide/topics/appwidgets/index.html"> </a> UI . 42 .</p> 43 <ul> 44 <li><strong>UI XML </strong>. Android 45 XML .</li> 46 <li><strong> </strong>. 47 ViewGroup ( ). </li> 48 </ul> 49 50 <p>Android UI , . , XML . , XML . </p> 51 52 <div class="sidebox-wrapper"> 53 <div class="sidebox"> 54 <ul> 55 <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">Eclipse ADT 56 </a> XML . — 57 XML <strong></strong> .</li> 58 <li>, 59 <a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer"> </a> 60 .— , 61 / 62 .</li> 63 <li><a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> 64 .</li> 65 </div> 66 </div> 67 68 <p>UI XML . UI . . , , XML . XML UI . , XML . , 69 {@link android.view.ViewGroup} 70 {@link android.view.View} .</p> 71 72 <p> UI XML . . XML , XML . . . , 73 EditText <code>text</code> 74 <code>EditText.setText()</code> . </p> 75 76 <p class="note"><strong>:</strong> <a href="{@docRoot}guide/topics/ui/layout-objects.html"> 77 </a> . . 78 <a href="{@docRoot}resources/tutorials/views/index.html">Hello </a> .</p> 79 80 <h2 id="write">XML </h2> 81 82 <p>Android XML UI HTML . . </p> 83 84 <p> , ViewGroup . , . , {@link android.widget.LinearLayout} 85 {@link android.widget.TextView} {@link android.widget.Button} XML .</p> 86 <pre> 87 <?xml version="1.0" encoding="utf-8"?> 88 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 89 android:layout_width="match_parent" 90 android:layout_height="match_parent" 91 android:orientation="vertical" > 92 <TextView android:id="@+id/text" 93 android:layout_width="wrap_content" 94 android:layout_height="wrap_content" 95 android:text="Hello, I am a TextView" /> 96 <Button android:id="@+id/button" 97 android:layout_width="wrap_content" 98 android:layout_height="wrap_content" 99 android:text="Hello, I am a Button" /> 100 </LinearLayout> 101 </pre> 102 103 <p> XML Android <code>res/layout/</code> 104 <code>.xml</code> . </p> 105 106 <p> XML <a href="{@docRoot}guide/topics/resources/layout-resource.html"> </a> .</p> 107 108 <h2 id="load">XML </h2> 109 110 <p> , XML 111 {@link android.view.View} . 112 {@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} 113 . 114 <code>{@link android.app.Activity#setContentView(int) setContentView()}</code> , 115 <code>R.layout.<em>layout_file_name</em></code> . 116 , XML <code>main_layout.xml</code> , 117 .</p> 118 <pre> 119 public void onCreate(Bundle savedInstanceState) { 120 super.onCreate(savedInstanceState); 121 setContentView(R.layout.main_layout); 122 } 123 </pre> 124 125 <p> <code>onCreate()</code> 126 Android ( 127 <a href="{@docRoot}guide/components/activities.html#Lifecycle"></a> 128 ).</p> 129 130 131 <h2 id="attributes"></h2> 132 133 <p> ViewGroup XML . 134 ( , TextView <code>textSize</code> 135 ), . 136 . (: 137 <code>id</code> ). " " . 138 , VeiwGroup 139 .</p> 140 141 <h3 id="id">ID</h3> 142 143 <p> ID . . 144 ID , ID 145 XML , <code>id</code> . 146 XML 147 ({@link android.view.View} ) . 148 ID , XML .</p> 149 <pre>android:id="@+id/my_button"</pre> 150 151 <p> (@) XML ID 152 ID . (+) , 153 (<code>R.java</code> ). Android ID 154 . Android ID 155 <code>android</code> .</p> 156 <pre>android:id="@android:id/empty"</pre> 157 <p><code>android</code> ID <code>android.R</code> 158 .</p> 159 160 <p> .</p> 161 <ol> 162 <li> / ID . 163 <pre> 164 <Button android:id="@+id/my_button" 165 android:layout_width="wrap_content" 166 android:layout_height="wrap_content" 167 android:text="@string/my_button_text"/> 168 </pre> 169 </li> 170 <li> 171 ( <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code> ). 172 <pre> 173 Button myButton = (Button) findViewById(R.id.my_button); 174 </pre> 175 </li> 176 </ol> 177 <p>{@link android.widget.RelativeLayout} ID . 178 , 179 ID .</p> 180 <p>ID , 181 ( , 182 ).</p> 183 184 185 <h3 id="layout-params"> </h3> 186 187 <p><code>layout_<em>something</em></code> XML 188 ViewGroup .</p> 189 190 <p> ViewGroup {@link 191 android.view.ViewGroup.LayoutParams} . 192 193 . 1 , 194 ( ).</p> 195 196 <img src="{@docRoot}images/layoutparams.png" alt="" /> 197 <p class="img-caption"><strong> 1.</strong> 198 .</p> 199 200 <p> LayoutParams 201 . LayoutParams . 202 LayoutParams . </p> 203 204 <p> (<code>layout_width</code> 205 <code>layout_height</code>), . 206 LayoutParams . <p> 207 208 <p> . 209 . 210 . </p> 211 212 <ul> 213 <li><var>wrap_content</var> 214 .</li> 215 <li><var>match_parent</var> ( <var>fill_parent</var> , API 8 ) 216 .</li> 217 </ul> 218 219 <p> 220 . , 221 (<var>dp</var>), <var>wrap_content</var>, 222 <var>match_parent</var> . 223 . 224 225 <a href="{@docRoot}guide/topics/resources/available-resources.html#dimension"> 226 </a> .</p> 227 228 229 <h2 id="Position"> </h2> 230 <p> 231 . , 232 <em></em> <em></em> , 233 . . 234 235 </p> 236 237 <p> 238 . 239 {@link android.view.View#getLeft()} {@link android.view.View#getTop()} . 240 , X . 241 , Y . 242 . , 243 <code>getLeft()</code> 20 244 20 . 245 </p> 246 247 <p> 248 . 249 {@link android.view.View#getRight()} {@link android.view.View#getBottom()} . 250 . 251 {@link android.view.View#getRight()} 252 . <code>getLeft() + getWidth()</code> 253 </p> 254 255 256 <h2 id="SizePaddingMargins">, </h2> 257 <p> 258 . 259 . 260 </p> 261 262 <p> 263 <em> </em> 264 <em> </em> . 265 . 266 {@link android.view.View#getMeasuredWidth()} 267 {@link android.view.View#getMeasuredHeight()} . 268 </p> 269 270 <p> 271 <em></em> <em></em> , 272 <em> </em> <em> </em> . 273 274 . 275 . 276 {@link android.view.View#getWidth()} {@link android.view.View#getHeight()} . 277 </p> 278 279 <p> 280 . 281 , , . 282 283 . 2 284 2 . 285 {@link android.view.View#setPadding(int, int, int, int)} , 286 {@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()}, 287 {@link android.view.View#getPaddingRight()} {@link android.view.View#getPaddingBottom()} . 288 </p> 289 290 <p> 291 , 292 . . 293 {@link android.view.ViewGroup} 294 {@link android.view.ViewGroup.MarginLayoutParams} . 295 </p> 296 297 <p> 298 <a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension"> </a> . 299 </p> 300 301 302 303 304 305 306 <style type="text/css"> 307 div.layout { 308 float:left; 309 width:200px; 310 margin:0 0 20px 20px; 311 } 312 div.layout.first { 313 margin-left:0; 314 clear:left; 315 } 316 </style> 317 318 319 320 321 <h2 id="CommonLayouts"> </h2> 322 323 <p>{@link android.view.ViewGroup} 324 . Android , 325 .</p> 326 327 <p class="note"><strong>:</strong> 328 UI , 329 . ( 330 ).</p> 331 332 <!-- 333 <h2 id="framelayout">FrameLayout</h2> 334 <p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout 335 object. It's basically a blank space on your screen that you can 336 later fill with a single object — for example, a picture that you'll swap in and out. 337 All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot 338 specify a different location for a child view. Subsequent child views will simply be drawn over 339 previous ones, 340 partially or totally obscuring them (unless the newer object is transparent). 341 </p> 342 --> 343 344 345 <div class="layout first"> 346 <h4><a href="layout/linear.html"> </a></h4> 347 <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a> 348 <p> . 349 .</p> 350 </div> 351 352 <div class="layout"> 353 <h4><a href="layout/relative.html"> </a></h4> 354 <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a> 355 <p> ( A 356 B ), ( ).</p> 357 </div> 358 359 <div class="layout"> 360 <h4><a href="{@docRoot}guide/webapps/webview.html"> </a></h4> 361 <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a> 362 <p> .</p> 363 </div> 364 365 366 367 368 <h2 id="AdapterViews" style="clear:left"> </h2> 369 370 <p> , 371 {@link android.widget.AdapterView} . 372 {@link android.widget.AdapterView} {@link android.widget.Adapter} 373 . {@link android.widget.Adapter} {@link android.widget.AdapterView} 374 . —{@link android.widget.Adapter} 375 ( ) 376 {@link android.widget.AdapterView} .</p> 377 378 <p> .</p> 379 380 <div class="layout first"> 381 <h4><a href="layout/listview.html"> </a></h4> 382 <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a> 383 <p> .</p> 384 </div> 385 386 <div class="layout"> 387 <h4><a href="layout/gridview.html"> </a></h4> 388 <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a> 389 <p> .</p> 390 </div> 391 392 393 394 <h3 id="FillingTheLayout" style="clear:left"> </h3> 395 396 <p>{@link android.widget.ListView} 397 {@link android.widget.GridView} {@link android.widget.AdapterView} {@link android.widget.AdapterView} 398 {@link android.widget.Adapter} . {@link 399 android.view.View} .</p> 400 401 <p>Android {@link android.widget.Adapter} . 402 {@link android.widget.AdapterView} . 403 .</p> 404 405 <dl> 406 <dt>{@link android.widget.ArrayAdapter}</dt> 407 <dd> . {@link 408 android.widget.ArrayAdapter} {@link 409 java.lang.Object#toString()} {@link 410 android.widget.TextView} . 411 <p> , {@link 412 android.widget.ListView} , 413 {@link android.widget.ArrayAdapter} .</p> 414 <pre> 415 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 416 android.R.layout.simple_list_item_1, myStringArray); 417 </pre> 418 <p> .</p> 419 <ul> 420 <li> {@link android.content.Context}</li> 421 <li> {@link android.widget.TextView} </li> 422 <li> </li> 423 </ul> 424 <p> {@link android.widget.ListView} 425 {@link android.widget.ListView#setAdapter setAdapter()} .</p> 426 <pre> 427 ListView listView = (ListView) findViewById(R.id.listview); 428 listView.setAdapter(adapter); 429 </pre> 430 431 <p> {@link 432 java.lang.Object#toString()} . , 433 {@link android.widget.TextView} ( 434 {@link android.widget.ImageView} ), {@link 435 android.widget.ArrayAdapter} {@link android.widget.ArrayAdapter#getView 436 getView()} .</p> 437 438 </dd> 439 440 <dt>{@link android.widget.SimpleCursorAdapter}</dt> 441 <dd> {@link android.database.Cursor} . 442 {@link android.widget.SimpleCursorAdapter} , 443 {@link android.database.Cursor} . {@link android.database.Cursor} 444 . 445 , {@link 446 android.database.Cursor} . 447 {@link 448 android.database.Cursor} , 449 .</p> 450 <pre> 451 String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME, 452 ContactsContract.CommonDataKinds.Phone.NUMBER}; 453 int[] toViews = {R.id.display_name, R.id.phone_number}; 454 </pre> 455 <p>{@link android.widget.SimpleCursorAdapter} , 456 {@link android.database.Cursor}, .</p> 457 <pre> 458 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 459 R.layout.person_name_and_number, cursor, fromColumns, toViews, 0); 460 ListView listView = getListView(); 461 listView.setAdapter(adapter); 462 </pre> 463 <p> {@link android.widget.SimpleCursorAdapter} 464 {@link android.database.Cursor} . {@code toViews} {@code 465 fromColumns} .</p>.</dd> 466 </dl> 467 468 469 <p> , 470 {@link android.widget.ArrayAdapter#notifyDataSetChanged()} . 471 .</p> 472 473 474 475 <h3 id="HandlingUserSelections"> </h3> 476 477 <p>{@link android.widget.AdapterView} 478 {@link android.widget.AdapterView.OnItemClickListener} . :</p> 479 480 <pre> 481 // Create a message handling object as an anonymous class. 482 private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { 483 public void onItemClick(AdapterView parent, View v, int position, long id) { 484 // Do something in response to the click 485 } 486 }; 487 488 listView.setOnItemClickListener(mMessageClickedHandler); 489 </pre> 490 491 492 493