Using XML-Based Layouts While it is technically possible to create and dịch - Using XML-Based Layouts While it is technically possible to create and Việt làm thế nào để nói

Using XML-Based Layouts While it is

Using XML-Based Layouts
While it is technically possible to create andattach widgets to your activity purely
through Java code, as we did in the preceding chapter, the more common approach is
to use an XML-based layout file. Dynamic instantiation of widgets is reserved for more
complicated scenarios, where the widgets are not known at compile time (e.g.,
populating a column of radio buttons based on data retrieved from the Internet).
With that in mind, it’s time to break out the XML and learn how to lay out Android activity
views that way.
What Is an XML-Based Layout?
As the name suggests, an XML-based layout is a specification of widgets’ relationships
to each other—and to containers—encoded inXML format. Specifically, Android
considers XML-based layouts to be resources, andas such, layout files are stored in the
reslayoutdirectory inside your Android project.
Each XML file contains a tree of elements specifying a layout of widgets and containers
that make up one View. The attributes of the XML elements are properties, describing
how a widget should look or how a container should behave. For example, if a Button
element has an attribute value of android:textStyle = "bold", that means that the text
appearing on the face of the button should be rendered ina boldface font style.
Android’s SDK ships with a tool (aapt) that uses the layouts. This tool should be
automatically invoked by your Android tool chain (e.g., Eclipse or Ant’s build.xml). Of
particular importance to you as a developer is that aaptgenerates the R.javasource file
within your project’s gendirectory, allowing you to access layouts and widgets within
those layouts directly from your Java code, aswill be demonstrated later in this chapter.
Why Use XML-Based Layouts?
Most everything you do using XML layout files can be achieved through Java code. For
example, you could use setTypeface()to have a button render its text in bold, instead
8
www.it-ebooks.info
CHAPTER 8: Using XML-Based Layouts 58
of using a property in an XML layout. Since XML layouts are yet another file for you to
keep track of, we need good reasons for using such files.
Perhaps the biggest reason is to assist in the creation of tools for view definition, such
as a GUI builder in an IDE like Eclipse or a dedicated Android GUI designer like
DroidDraw. Such GUI builders could, in principle,generate Java code instead of XML.
The challenge is rereading the definition in the design tool to support edits, which is far
simpler when the data is in a structured format like XML ratherthan in a programming
language. Moreover, keeping the generated bits separated from handwritten code
makes it less likely that somebody’s custom-crafted source will get clobbered by
accident when the generated bits get regenerated. XML forms a nice middle ground
between something that is easy for tool writers to use and something that is easy for
programmers to work with by hand as needed.
Also, XML as a GUI definition format isbecoming more commonplace. Microsoft’s
Extensible Application Markup Language (XAML), Adobe’s Flex, Google’s Google Web
Toolkit (GWT), and Mozilla’s XML User Interface Language (XUL) all take a similar
approach to that of Android:put layout details in an XML file and put programming
smarts in source files (e.g., JavaScript for XUL). Many less-well-known GUI frameworks,
such as ZK, also use XML for view definition. While “following the herd” is not
necessarily the best policy, it does have the advantage of helping toease the transition
to Android from any other XML-centered view description language.
OK, So What Does It Look Like?
Here is the Buttonfrom the previous chapter’s sampleapplication, converted into an
XML layout file, found in the Layouts/NowReduxsample project:


The class name of the widget, Button, forms the name of the XML element. Since Button
is an Android-supplied widget, we can just use the bare class name.If you create your
own widgets as subclasses of android.view.View, you will need to provide a full
package declaration as well (e.g., com.commonsware.android.MyWidget).
The root element needs to declare the Android XML namespace:
xmlns:android="http://schemas.android.com/apk/res/android"
All other elements will be children of the rootand will inherit that namespace declaration.
Because we want to reference this button from our Java code, we need to give it an
identifier via the android:idattribute. We will cover this concept in greater detail in the
next section.
www.it-ebooks.info
CHAPTER 8: Using XML-Based Layouts 59
The remaining attributes are properties of this Buttoninstance:
 android:text: Indicates the initial text to be displayed on the button
face (in this case, an empty string)
 android:layout_widthand android:layout_height: Tell Android to
have the button’s width and height fill the parent, which in this case is
the entire screen
These attributes will be covered ingreater detail in Chapter 10.
Since this single widget is the only content in our activity’s view, we need only this single
element. Complex views will require a whole tree of elements, representing the widgets
and containers that control their positioning. All the remaining chapters of this book will
use the XML layout form whenever practical, so there are dozens of other examples of
more complex layouts for you to peruse.
What’s with the @ Signs?
Many widgets and containers need to appear only in the XML layout file and do not need
to be referenced in your Java code. For example, a static label (TextView) frequently
needs to be in the layout file only to indicate where it should appear. These sorts of
elements in the XML file do not need to have the android:idattribute to give them a
name.
Anything you dowant to use in your Java source, though, needs an android:id.
The convention is to use @+id/...as the idvalue, where the ...represents your locally
unique name for the widget in question, for the first occurrence of a given idvalue in
your layout file. In the XML layoutexample in the preceding section, @+id/buttonis the
identifier for the Buttonwidget. The second and subsequent occurrences in the same
layout file should drop the +sign—a feature we will use in Chapter 10.
Android provides a few special android:idvalues, of the form @android:id/.... You will
see some of these values in various examples throughout this book.
And How Do We Attach These to the Java?
Given that you have painstakingly set up the widgets and containers for your view in an
XML layout file named main.xmlstored in res/layout, all you need is one statement in
your activity’s onCreate()callback to use that layout:
setContentView(R.layout.main);
This is the same setContentView()we used earlier, passing it an instance of a View
subclass (in that case, a Button). The Android-built View, constructed from our layout, is
accessed from that code-generated Rclass. All of the layouts are accessible under
R.layout, keyed by the base name of the layout file; for example, res/layout/main.xml
results in R.layout.main.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Bằng cách sử dụng bố trí XML-Based
trong khi nó là kỹ thuật có thể để tạo ra các andattach widget để hoạt động của bạn hoàn toàn
thông qua mã Java, như chúng tôi đã làm ở các chương trước, cách tiếp cận phổ biến hơn là
để sử dụng một tập tin XML dựa trên giao diện. Instantiation động vật được dành riêng để biết thêm
phức tạp kịch bản, nơi các vật dụng không được biết đến tại thời gian biên dịch (ví dụ:
Populating một cột nút radio dựa trên dữ liệu Lấy từ Internet).
Với ý nghĩ đó, nó là thời gian để thoát ra khỏi các XML và tìm hiểu làm thế nào để lay ra hoạt động Android
xem như vậy.
Những gì là một giao diện dựa trên XML?
Như tên cho thấy, một giao diện dựa trên XML là một đặc điểm kỹ thuật của mối quan hệ vật dụng
với nhau — và container-định dạng mã hóa inXML. Cụ thể, Android
xem xét XML dựa trên bố trí để là nguồn tài nguyên, andas như vậy, bố trí các tập tin được lưu trữ trong các
reslayoutdirectory bên trong dự án Android của bạn.
Mỗi tệp tin XML chứa một cây yếu tố xác định một cách bố trí widget và các thùng chứa
tạo nên một giao diện. Các thuộc tính của các yếu tố XML là tài sản, mô tả
cách một widget nên xem xét hoặc làm thế nào một container nên cư xử. Ví dụ, nếu một nút
nguyên tố có một giá trị thuộc tính của android: textStyle = "đậm", điều đó có nghĩa rằng các văn bản
xuất hiện trên khuôn mặt của nút nên được kết xuất kiểu phông đậm ina.
Android SDK tàu với một công cụ (aapt) sử dụng bố trí. Công cụ này nên
tự động kích hoạt bởi chuỗi công cụ Android của bạn (ví dụ như, Nhật thực hoặc kiến của build.xml). Của
tầm quan trọng đặc biệt cho bạn như là một nhà phát triển là mà aaptgenerates các tập tin R.javasource
trong dự án của bạn gendirectory, cho phép bạn để bố trí truy cập và các vật dụng trong
những bố trí trực tiếp từ của bạn mã Java, aswill được chứng minh sau đó trong chương này.
Tại sao sử dụng XML dựa trên bố trí?
Hầu hết mọi thứ bạn làm bằng cách sử dụng XML bố trí tập tin có thể đạt được thông qua mã Java. Cho
ví dụ, bạn có thể sử dụng setTypeface () để có một nút Hiển thị văn bản của nó trong đậm, thay vào đó
8
www.it-ebooks.info
chương 8: Using XML-Based bố trí 58
của việc sử dụng một tài sản trong một bố trí XML. Kể từ khi bố trí XML được này là một tập tin để bạn có thể
theo dõi các, chúng ta cần các lý do tốt cho việc sử dụng các tập tin.
Có lẽ là lý do lớn nhất là hỗ trợ trong việc tạo ra các công cụ để xem định nghĩa, như vậy
là một người thợ xây GUI trong một IDE như Eclipse hoặc một nhà thiết kế chuyên dụng Android GUI như
DroidDraw. Xây dựng GUI như vậy có thể, về nguyên tắc, tạo ra mã Java thay vì XML.
Những thách thức rereading định nghĩa trong công cụ thiết kế để hỗ trợ sửa đổi, đó là đến nay
đơn giản khi dữ liệu là trong một định dạng cấu trúc như XML ngườiở trong một chương trình
ngôn ngữ. Hơn nữa, giữ các bit tạo ra khỏi tay mã
làm cho nó ít có khả năng đó là người tuỳ chỉnh-crafted nguồn sẽ nhận được clobbered bởi
tai nạn khi các bit được tạo ra có được tái tạo. XML tạo thành một mặt bằng trung tốt đẹp
giữa một cái gì đó mà là dễ dàng cho các nhà văn công cụ để sử dụng và một cái gì đó mà là dễ dàng cho
lập trình để làm việc với bằng tay khi cần thiết.
Ngoài ra, XML là một GUI định nghĩa định dạng isbecoming phổ biến. Của Microsoft
mở rộng ứng dụng đánh dấu ngôn ngữ (XAML), của Adobe Flex, của Google Google Web
Toolkit (GWT), và của Mozilla XML người dùng giao diện ngôn ngữ (XUL) tất cả có một tương tự
tiếp cận để của Android: đặt bố trí chi tiết trong một XML tập tin và đặt lập trình
smarts trong nguồn tập tin (ví dụ như, JavaScript cho XUL). Khuôn khổ GUI ít cũng được biết đến nhiều,
chẳng hạn như ZK, cũng sử dụng XML cho xem định nghĩa. Trong khi "theo các đàn gia súc" là không
nhất thiết phải chính sách tốt nhất, nó có lợi thế trong việc giúp toease quá trình chuyển đổi
vào Android từ bất kỳ ngôn ngữ khác mô tả XML tập trung xem.
OK, vậy điều gì làm nó trông giống như?
Đây là Buttonfrom chương trước vàoSampleApplication, chuyển đổi thành một
Tệp XML bố trí, tìm thấy trong dự án bố trí/NowReduxsample:

< Nút xmlns:android = "http://schemas.android.com/apk/res/android"
android: id = "@ id/nút"
android: văn bản = ""
android: layout_width = "fill_parent"
android: layout_height = "fill_parent" / >
tên lớp của widget, nút, tạo thành tên của các yếu tố XML. Kể từ khi nút
là một phụ tùng Android cung cấp, chúng tôi có thể chỉ cần sử dụng tên lớp trần.Nếu bạn tạo của bạn
widget của riêng như các phân lớp của android.view.View, bạn sẽ cần phải cung cấp đầy đủ
gói tuyên bố là tốt (ví dụ, com.commonsware.android.MyWidget).
Phần tử gốc cần tuyên bố không gian tên Android XML:
xmlns:android = "http://schemas.android.com/apk/res/android"
Tất cả các yếu tố khác sẽ là trẻ em của rootand sẽ thừa kế tuyên bố không gian tên đó.
Vì chúng tôi muốn tham khảo các nút này từ mã Java của chúng tôi, chúng ta cần phải cung cấp cho nó một
nhận dạng thông qua android: idattribute. Chúng tôi sẽ bao gồm các khái niệm này chi tiết hơn trong các
phần kế tiếp.
www.it-ebooks.info
chương 8: Using XML-Based bố trí 59
Các thuộc tính còn lại là các thuộc tính của Buttoninstance này:
android: văn bản: chỉ ra các văn bản ban đầu sẽ được hiển thị trên nút
phải đối mặt (trong trường hợp này, một chuỗi rỗng)
android android: layout_widthand: layout_height: nói với Android để
có các nút chiều rộng và chiều cao điền vào phụ huynh, trong trường hợp này là
toàn bộ màn hình
Các thuộc tính này sẽ bao phủ ingreater chi tiết trong chương 10.
Do widget này duy nhất là nội dung chỉ trong chế độ xem hoạt động của chúng tôi, chúng tôi cần chỉ này đơn
nguyên tố. Số lần xem phức tạp sẽ yêu cầu một cây toàn bộ của yếu tố, đại diện cho các vật dụng
và container mà kiểm soát vị trí của họ. Tất cả các chương còn lại của cuốn sách này sẽ
sử dụng các hình thức bố trí XML, bất cứ khi nào thực tế, do đó, có hàng chục các ví dụ khác của
các bố trí phức tạp hơn cho bạn để lướt.
What's với @ dấu hiệu?
Nhiều widget và các thùng chứa cần để xuất hiện chỉ trong việc bố trí XML tập tin và không cần
để được tham chiếu trong Java mã của bạn. Ví dụ, một tĩnh nhãn (TextView) thường xuyên
cần phải trong tập tin bố trí chỉ để cho biết nơi mà nó sẽ xuất hiện. Những sắp xếp của
Các yếu tố trong các tập tin XML không cần phải có android: idattribute để cung cấp cho họ một
tên.
Bất cứ điều gì bạn dowant để sử dụng trong của bạn mã nguồn của Java, Tuy nhiên, cần một android: id.
Công ước là sử dụng @ id /... như là idvalue, nơi các... .represents của bạn tại địa phương
tên duy nhất cho các widget trong câu hỏi, cho sự xuất hiện đầu tiên của một idvalue nhất định trong
tệp bố trí của bạn. Trong layoutexample XML trong phần trước, @ id/buttonis các
định danh cho Buttonwidget. Lần xuất hiện thứ hai và tiếp theo trong cùng một
bố trí tập tin nên thả các dấu hiệu-một tính năng chúng tôi sẽ sử dụng trong chương 10.
Android cung cấp một vài đặc biệt android: idvalues, của @android mẫu: id /... Bạn sẽ
thấy một số trong những giá trị trong các ví dụ khác nhau trong suốt cuốn sách này.
Và làm thế nào chúng tôi đính kèm các Java?
Cho rằng bạn đã sửa chữa thiết lập widget và container cho chế độ xem của bạn trong một
XML bố trí tập tin có tên main.xmlstored res/bố trí, tất cả bạn cần là một tuyên bố trong
hoạt động của bạn onCreate () gọi lại để sử dụng bố trí rằng:
setContentView(R.layout.main);
Đây là () setContentView cùng chúng tôi sử dụng trước đó, đi qua nó một thể hiện của một cái nhìn
phân lớp (trong trường hợp đó, một nút). Giao diện Android xây dựng, xây dựng từ bố trí của chúng tôi, là
truy cập từ đó tạo ra mã Rclass. Tất cả các bố trí có thể truy cập theo
R.layout, keyed tên cơ sở của các tập tin bố trí; Ví dụ, res/layout/main.xml
results ở R.layout.main.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Sử dụng Layouts XML-Based
Trong khi đó là kỹ thuật có thể tạo ra andattach vật dụng để hoạt động của bạn hoàn toàn
thông qua các mã Java, như chúng tôi đã làm trong chương trước, cách tiếp cận phổ biến hơn là
sử dụng một tập tin bố trí dựa trên XML. Năng động instantiation của các vật dụng được dành riêng cho nhiều
kịch bản phức tạp, trong đó các vật dụng không được biết đến tại thời gian biên dịch (ví dụ,
Populating một cột nút radio dựa trên dữ liệu lấy từ Internet).
Với ý nghĩ đó, đó là thời gian để thoát ra khỏi XML và học cách đặt ra các hoạt động Android
views theo cách đó.
một diện XML-Based là gì?
Như tên cho thấy, một bố trí dựa trên XML là một đặc điểm kỹ thuật của mối quan hệ vật dụng '
cho mỗi định dạng inXML container mã hóa khác-và. Cụ thể, Android
xem xét bố trí dựa trên XML là nguồn lực, ANDAs như vậy, các tập tin bố trí được lưu trữ trong
reslayoutdirectory bên trong dự án Android của bạn.
Mỗi tập tin XML chứa một cây của các yếu tố xác định một cách bố trí của các vật dụng và container
tạo nên một View. Các thuộc tính của các phần tử XML là tài sản, mô tả
làm thế nào một widget nên xem xét hoặc làm thế nào một container nên cư xử. Ví dụ, nếu một nút
phần tử có giá trị thuộc tính của Android: kiểu chữ = "táo bạo", điều đó có nghĩa rằng các văn bản
xuất hiện trên khuôn mặt của nút nên được trả lại ina đậm phong cách font.
tàu SDK Android với một công cụ (AAPT) mà sử dụng bố cục. Công cụ này nên được
tự động gọi bởi chuỗi công cụ Android của bạn (ví dụ, Eclipse hoặc build.xml của Ant). Của
đặc biệt quan trọng với bạn như một nhà phát triển là aaptgenerates tập tin R.javasource
trong gendirectory của dự án của bạn, cho phép bạn truy cập vào bố trí và các vật dụng trong
những bố trí trực tiếp từ mã Java của bạn, aswill được chứng minh sau trong chương này.
Tại sao sử dụng XML-Based bố trí?
Hầu hết tất cả mọi thứ bạn sử dụng các file XML bố trí có thể đạt được thông qua mã Java. Cho
ví dụ, bạn có thể sử dụng setTypeface () để có một nút làm cho văn bản của nó in đậm, thay vì
8
www.it-ebooks.info
Chương 8: Sử dụng XML-Based Layouts 58
của việc sử dụng một tài sản trong một bố trí XML. Kể từ khi bố trí XML Chưa một tập tin để bạn có thể
theo dõi, chúng ta cần lý do chính đáng cho việc sử dụng tập tin như vậy.
Có lẽ lý do lớn nhất là hỗ trợ trong việc tạo ra các công cụ để xem định nghĩa, chẳng hạn
như một người xây dựng giao diện trong một IDE như Eclipse hoặc một chuyên dụng Android thiết kế giao diện như
DroidDraw. Xây dựng giao diện như vậy có thể, về nguyên tắc, tạo ra mã Java thay vì XML.
Thách thức là đọc lại định nghĩa trong các công cụ thiết kế để hỗ trợ chỉnh sửa, đó là xa
đơn giản khi các dữ liệu trong một định dạng có cấu trúc như ratherthan XML trong lập trình
ngôn ngữ. Hơn nữa, việc giữ các bit tạo ra tách từ mã viết tay
làm cho nó ít có khả năng là nguồn tùy chỉnh thủ công của ai đó sẽ nhận được clobbered bởi
tai nạn khi các bit tạo ra được tái sinh. XML tạo thành một trung đất đẹp
giữa cái gì đó là dễ dàng cho các nhà văn công cụ để sử dụng và cái gì đó là dễ dàng cho
các lập trình viên làm việc với bằng tay khi cần thiết.
Ngoài ra, XML như là một định dạng độ nét GUI isbecoming phổ biến hơn. Microsoft
Extensible Application Markup Language (XAML), Flex của Adobe, Google Web Google
Toolkit (GWT), và Mozilla XML User Interface Language (XUL) tất cả có một tương tự như
cách tiếp cận của Android: đặt các chi tiết bố trí trong một file XML và đưa lập trình
thông minh trong các tập tin mã nguồn (ví dụ, JavaScript cho XUL). Nhiều khuôn khổ giao diện ít nổi tiếng,
chẳng hạn như ZK, cũng sử dụng XML để xem định nghĩa. Trong khi "theo bầy đàn" không phải là
nhất thiết phải là chính sách tốt nhất, nó có lợi thế là giúp toease quá trình chuyển đổi
cho Android từ bất kỳ xem ngôn ngữ mô tả XML trung tâm khác.
OK, Vì vậy, What Does It Nhìn như thế nào?
Đây là Buttonfrom trước sampleapplication chương của, chuyển đổi thành một
tập tin XML layout, được tìm thấy trong các dự án Layouts / NowReduxsample:

tên lớp của các phụ tùng, Button, tạo thành tên của phần tử XML. Từ nút là một widget Android cung cấp, chúng tôi chỉ có thể sử dụng lớp trần name.If bạn tạo widget của riêng như lớp con của android.view.View, bạn sẽ cần phải cung cấp đầy đủ khai gói cũng như (ví dụ, com.commonsware .. android.MyWidget) Các phần tử gốc cần phải khai báo không gian tên XML Android: xmlns: android = "http://schemas.android.com/apk/res/android" Tất cả các yếu tố khác sẽ là con của rootand sẽ kế thừa mà . tuyên bố không gian tên Bởi vì chúng tôi muốn tham khảo nút này từ mã Java của chúng tôi, chúng ta cần phải cung cấp cho nó một định danh thông qua Android: idattribute. Chúng tôi sẽ bao gồm khái niệm này chi tiết hơn trong phần tiếp theo. www.it-ebooks.info Chương 8: Sử dụng XML-Based Layouts 59 Các thuộc tính còn lại là tài sản của Buttoninstance này: ? Android: văn bản: Cho biết văn bản ban đầu sẽ được hiển thị trên nút mặt (trong trường hợp này, một chuỗi rỗng) ? Android: layout_widthand Android: layout_height: Tell Android để có chiều rộng của nút và chiều cao đầy cha mẹ, mà trong trường hợp này là toàn bộ màn hình Những thuộc tính này sẽ được đề cập ingreater chi tiết trong Chương 10. Kể từ phụ tùng duy nhất này là nội dung duy nhất trong hoạt động của chúng tôi xem, chúng ta chỉ cần đơn này tố. Quan điểm phức tạp đòi hỏi phải có một cây toàn bộ các yếu tố, đại diện cho các vật dụng và container kiểm soát vị trí của họ. Tất cả các chương còn lại của cuốn sách này sẽ sử dụng các hình thức bố trí XML bất cứ khi nào thực tế, do đó, có hàng chục ví dụ khác về bố trí phức tạp hơn cho bạn nghiên cứu. gì với dấu hiệu @? Nhiều vật dụng và container cần phải chỉ xuất hiện trong cách bố trí XML nộp và không cần phải được tham chiếu trong mã Java của bạn. Ví dụ, một nhãn tĩnh (TextView) thường xuyên cần phải được bố trí trong các tập tin chỉ để cho biết nơi mà nó sẽ xuất hiện. Các loại của các yếu tố trong file XML không cần phải có Android: idattribute để cung cấp cho họ một . tên Bất cứ điều gì bạn dowant để sử dụng trong mã nguồn Java của bạn, tuy nhiên, cần một android:. id Quy ước là sử dụng @ + id / ... là idvalue, nơi mà các ... đại diện cho địa phương của bạn tên duy nhất cho các phụ tùng trong câu hỏi, cho sự xuất hiện đầu tiên của một idvalue được đưa ra trong bố trí tập tin của bạn. Trong layoutexample XML trong phần trước, @ + id / buttonis các bộ nhận diện cho Buttonwidget. Các lần xuất hiện thứ hai và sau đó trong cùng một tập tin bố trí phải thả các dấu +-một tính năng chúng tôi sẽ sử dụng trong Chương 10. Android cung cấp một vài Android đặc biệt: idvalues, của mẫu @ android: id / .... Bạn sẽ thấy một số các giá trị này trong các ví dụ khác nhau trong suốt cuốn sách này. và như thế nào Chúng tôi Gắn Những đến Java? Cho rằng bạn đã cẩn thận thiết lập các vật dụng và container cho quan điểm của bạn trong một bố trí tập tin XML có tên main.xmlstored trong res / bố trí, tất cả các bạn nhu cầu là một trong những tuyên bố trong onCreate () gọi lại hoạt động của bạn để sử dụng bố trí: setContentView (R.layout.main); Đây là setContentView cùng (), chúng tôi sử dụng trước đó, đi qua nó một thể hiện của một Xem lớp con (trong trường hợp đó, một nút). View Android được xây dựng, được xây dựng từ cách bố trí của chúng tôi, được truy cập từ mã tạo ra Rclass. Tất cả các bố cục có thể truy cập dưới R.layout, keyed bởi tên cơ sở của tập tin bố trí; ví dụ, res / layout / main.xml kết quả trong R.layout.main.


















































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: