Home > Blockchain >  what is meaning of @ and ? in layout.xml file in the android
what is meaning of @ and ? in layout.xml file in the android

Time:09-21

what is the meaning of @ and ? in the layout.xml file I am new to android.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@android:color/holo_red_dark">


    <ImageView
        android:src="@drawable/duck"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:scaleType="centerCrop"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Link"
        android:textSize="?android:textAppearanceLarge"
        />
</LinearLayout>

android:textSize="?android:textAppearanceLarge"

android:background="@android:color/holo_red_dark"

CodePudding user response:

  • "?": it extracts a specific field/attribute/value from current "context"/object
  • "@": it refers to a specific entity that exists as a standalone "thing"

"?" is used when you want to refer to a specific Attribute of a (i.e) style but this style could be changed at "any time" (think about Dark or Light theme: the "Accent" color could be light or dark but the name is always ?attr/accentColor" for both themes). So if you refers to "?android:textAppearanceLarge" you want to use the "text appearance Large" version of current applied Theme. But this "text appearance Large" version could be different between two different Themes.

"@" is used when you want to use EXACTLY a specific "thing" that can't change between themes. In your specific example "@android:color/holo_red_dark" refers to a specific color that remain the same at any Theme and it is always "statically resolvable"

CodePudding user response:

The syntax rules of XML are very simple and logical. The rules are easy to learn, and easy to use.

You can prefer this https://stackoverflow.com/a/31129660/19674027

  • Related