Accessing integer resources in xml

前端 未结 6 1448
醉酒成梦
醉酒成梦 2021-02-02 08:23

I have read this where found that how to access integer resources in java class but no docs for another resource.

Here is Resources at res/values/integers.xml

         


        
相关标签:
6条回答
  • 2021-02-02 08:45

    if you are taking Integer resource then you have to take R.Integer.yourintvalue like this way

    int value=(int) contextG.getResources()
                .getDimension(R.integer.myvalue);
    
    0 讨论(0)
  • 2021-02-02 08:50

    The accepted answer is completely mis-guiding. Unless there is a specific unique reason, you should never use an Integer resource for setting padding sizes. Not only in XML but also in code. This is why you experienced an UnsupportedOperationException. Integer resources are not scaled based on the DPI of screens. Which means you will not get consistently spaced padding for all devices. Dimen resources will automatically adjust their value for you. Your java code should look like this:

    EditText mUsername = (EditText) this.findViewById(R.id.user_name);
    int padding = (int) this.getResources().getDimension(R.dimen.input_field_padding);
    mUsername.setPadding(padding, padding, padding, padding);
    

    Which, btw, there's no need to set the padding of the EditText element in code if you already set it in the XML. Unless you wanted to change it to a different value at run time.

    Read more here:
    Density Independence
    Working with XML Layouts

    0 讨论(0)
  • 2021-02-02 08:56

    Also You Can Define It This Way :

    <resources>
    <item name="text_line_spacing" format="integer" type="dimen">10</item>
    </resources>
    

    Format = enclosing data type:

    float boolean fraction integer ... and type stands for:

    Type = resource type (referenced with R.XXXXX.name):

    color dimen string style etc...

    Access It Like This :

    Resources res = getResources();
    int i= res.getInteger(R.dimen.int_value);
    
    0 讨论(0)
  • 2021-02-02 08:59

    Finally I am able to access integer resource in java code and integer value as dimen in xml.

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen name="input_field_padding">20dip</dimen>
        <integer name="input_field_padding">20</integer>
    </resources>
    

    In xml file:-

    <EditText
        android:id="@+id/user_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"    
        android:padding="@dimen/input_field_padding" /> 
    

    In java file:-

    EditText mUsername = (EditText) this.findViewById(R.id.user_name);
    //int padding = this.getResources().getInteger(R.integer.input_field_padding);
    int padding = (int) this.getResources().getDimension(R.dimen.input_field_padding);
    mUsername.setPadding(padding, padding, padding, padding);
    
    0 讨论(0)
  • 2021-02-02 09:00

    The correct way to access an integer field is using @integer/input_field_padding

    In XML

     <EditText
            android:id="@+id/user_name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"    
            android:padding="@dimen/input_field_padding" /> 
    

    In JAVA

    R.integer.integer_name
    

    Refer this http://developer.android.com/guide/topics/resources/more-resources.html#Integer .

    0 讨论(0)
  • 2021-02-02 09:00
     <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
    

    android:text="@integer/imageSelectLimit"

           android:textColor="@color/colorPrimary"
           android:textSize="@dimen/textSize"/>
    
    0 讨论(0)
提交回复
热议问题