安卓学习-资源访问
安卓学习-资源访问
1.静态原生的资源,都保存在assets里,如db,mp3等
2.其他的一般都通过R.访问
目录 | 存放资源 | 说明 |
/res/animator | 属性动画的XML | 颜色切换动画;3D旋转动画 |
/res/anim | 补件动画的XML | 只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性 |
/res/color | 颜色 | |
/res/drawable |
存放各种位图文件和Drawable的XML文件 如: *.png,*.9.png,*.jpg,*.gif BitmapDrawable NinePatchDrawable StateListDrawable ShapeDrawable AnimationDrawable Drawable各类其他子对象 |
NinePatchDrawable(*.9.png) StateListDrawable根据不同状态,变换背景色 ShapeDrawable 画图用的 AnimationDrawable 动画 |
/res/layout | 存放界面布局文件 | |
/res/menu | 存放菜单 | |
/res/raw |
存放一些原生资源,如声音、视频等
|
InputStream in=getResources().openRawResource(R.raw.aaa); 现在已经不建议放这里了,直接放assets 然后通过InputStream in=getResources().getAssets().open("aaa.txt"); 这些数据只能读取,不能写入。更重要的是该目录下的文件大小不能超过1M。
|
/res/values |
自定各种资源文件 如: arrays.xml strings.xml colors.xml demens.xml styles.xml |
|
/res/xml | 原生的xml文件可以存放在这里 | pull方式
try { XmlResourceParser xml = getResources().getXml(R.xml.bbb); xml.next(); int eventType = xml.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { // 如过到达标记的节点则取出内容 if (eventType == XmlPullParser.TEXT) { Log.v("weijj", EncodingUtils.getString(xml.getText().getBytes(), "utf-8")); } xml.next(); eventType = xml.getEventType(); } } catch (Exception e) { e.printStackTrace(); } dom方式,还是比较喜欢这个 xml文件 <?xml version="1.0" encoding="UTF-8"?> <China> <province id="21" name="浙江"> <city id="2101" name="杭州"> <county id="210101" name="杭州" weatherCode="101210101"/> <county id="210102" name="萧山" weatherCode="101210102"/> <county id="210103" name="桐庐" weatherCode="101210103"/> <county id="210104" name="淳安" weatherCode="101210104"/> <county id="210105" name="建德" weatherCode="101210105"/> <county id="210106" name="余杭" weatherCode="101210106"/> <county id="210107" name="临安" weatherCode="101210107"/> <county id="210108" name="富阳" weatherCode="101210108"/> </city> <city id="2102" name="湖州"> <county id="210201" name="湖州" weatherCode="101210201"/> <county id="210202" name="长兴" weatherCode="101210202"/> <county id="210203" name="安吉" weatherCode="101210203"/> <county id="210204" name="德清" weatherCode="101210204"/> </city> <city id="2103" name="嘉兴"> <county id="210301" name="嘉兴" weatherCode="101210301"/> <county id="210302" name="嘉善" weatherCode="101210302"/> <county id="210303" name="海宁" weatherCode="101210303"/> <county id="210304" name="桐乡" weatherCode="101210304"/> <county id="210305" name="平湖" weatherCode="101210305"/> <county id="210306" name="海盐" weatherCode="101210306"/> </city> <city id="2104" name="宁波"> <county id="210401" name="宁波" weatherCode="101210401"/> <county id="210402" name="慈溪" weatherCode="101210403"/> <county id="210403" name="余姚" weatherCode="101210404"/> <county id="210404" name="奉化" weatherCode="101210405"/> <county id="210405" name="象山" weatherCode="101210406"/> <county id="210406" name="宁海" weatherCode="101210408"/> <county id="210407" name="北仑" weatherCode="101210410"/> <county id="210408" name="鄞州" weatherCode="101210411"/> <county id="210409" name="镇海" weatherCode="101210412"/> </city> <city id="2105" name="绍兴"> <county id="210501" name="绍兴" weatherCode="101210501"/> <county id="210502" name="诸暨" weatherCode="101210502"/> <county id="210503" name="上虞" weatherCode="101210503"/> <county id="210504" name="新昌" weatherCode="101210504"/> <county id="210505" name="嵊州" weatherCode="101210505"/> </city> <city id="2106" name="台州"> <county id="210601" name="台州" weatherCode="101210601"/> <county id="210602" name="玉环" weatherCode="101210603"/> <county id="210603" name="三门" weatherCode="101210604"/> <county id="210604" name="天台" weatherCode="101210605"/> <county id="210605" name="仙居" weatherCode="101210606"/> <county id="210606" name="温岭" weatherCode="101210607"/> <county id="210607" name="洪家" weatherCode="101210609"/> <county id="210608" name="临海" weatherCode="101210610"/> <county id="210609" name="椒江" weatherCode="101210611"/> <county id="210610" name="黄岩" weatherCode="101210612"/> <county id="210611" name="路桥" weatherCode="101210613"/> </city> <city id="2107" name="温州"> <county id="210701" name="温州" weatherCode="101210701"/> <county id="210702" name="泰顺" weatherCode="101210702"/> <county id="210703" name="文成" weatherCode="101210703"/> <county id="210704" name="平阳" weatherCode="101210704"/> <county id="210705" name="瑞安" weatherCode="101210705"/> <county id="210706" name="洞头" weatherCode="101210706"/> <county id="210707" name="乐清" weatherCode="101210707"/> <county id="210708" name="永嘉" weatherCode="101210708"/> <county id="210709" name="苍南" weatherCode="101210709"/> </city> <city id="2108" name="丽水"> <county id="210801" name="丽水" weatherCode="101210801"/> <county id="210802" name="遂昌" weatherCode="101210802"/> <county id="210803" name="龙泉" weatherCode="101210803"/> <county id="210804" name="缙云" weatherCode="101210804"/> <county id="210805" name="青田" weatherCode="101210805"/> <county id="210806" name="云和" weatherCode="101210806"/> <county id="210807" name="庆元" weatherCode="101210807"/> <county id="210808" name="松阳" weatherCode="101210808"/> <county id="210809" name="景宁" weatherCode="101210809"/> </city> <city id="2109" name="金华"> <county id="210901" name="金华" weatherCode="101210901"/> <county id="210902" name="浦江" weatherCode="101210902"/> <county id="210903" name="兰溪" weatherCode="101210903"/> <county id="210904" name="义乌" weatherCode="101210904"/> <county id="210905" name="东阳" weatherCode="101210905"/> <county id="210906" name="武义" weatherCode="101210906"/> <county id="210907" name="永康" weatherCode="101210907"/> <county id="210908" name="磐安" weatherCode="101210908"/> </city> <city id="2110" name="衢州"> <county id="211001" name="衢州" weatherCode="101211001"/> <county id="211002" name="常山" weatherCode="101211002"/> <county id="211003" name="开化" weatherCode="101211003"/> <county id="211004" name="龙游" weatherCode="101211004"/> <county id="211005" name="江山" weatherCode="101211005"/> <county id="211006" name="衢江" weatherCode="101211006"/> </city> <city id="2111" name="舟山"> <county id="211101" name="舟山" weatherCode="101211101"/> <county id="211102" name="嵊泗" weatherCode="101211102"/> <county id="211103" name="岱山" weatherCode="101211104"/> <county id="211104" name="普陀" weatherCode="101211105"/> <county id="211105" name="定海" weatherCode="101211106"/> </city> </province> </China> 解析方法 String str=""; InputStream is = getAssets().open("tq.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //取得DocumentBuilderFactory实例 DocumentBuilder builder = factory.newDocumentBuilder(); //从factory获取DocumentBuilder实例 Document doc = builder.parse(is); //解析输入流 得到Document实例 Element rootElement = doc.getDocumentElement(); NodeList items = rootElement.getElementsByTagName("province"); Element item=(Element)items.item(0); //获得省份 str=str+item.getAttribute("name")+"\n"; //城市 items=item.getElementsByTagName("city"); for(int i=0;i<items.getLength();i++){ Element itemCity=(Element)items.item(i); str=str+itemCity.getAttribute("name")+":"; NodeList itemsXq=itemCity.getElementsByTagName("county"); for(int j=0;j<itemsXq.getLength();j++){ Element itemXq=(Element)itemsXq.item(j); str=str+itemXq.getAttribute("name")+","; } str=str+"\n\n"; } editText1.setText(str);
|
Drawable资源使用
1.BitmapDrawable
Drawable drawable=getResources().getDrawable(R.drawable.ic_launcher); ImageView imageView1=(ImageView)findViewById(R.id.imageView1); imageView1.setBackground(drawable);
2.StateListDrawable
支持的状态
属性值 | 含义 |
android:state_active | 激活状态 |
android:state_checkable | 可勾选状态 |
android:state_checked | 已勾选 |
android:state_enabled | 可用 |
android:state_first | 开始状态 |
android:state_focused | 得到焦点状态 |
android:state_last | 结束状态 |
android:state_middle | 中间状态 |
android:state_pressed | 被安装状态 |
android:state_selected | 被选中状态 |
android:state_window_focused | 窗口是否已获得焦点 |
例子:录入汉字是字体变色
edt1.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true" android:color="#EE2C2C" /> <item android:state_focused="false" android:color="#0A0A0A" /> </selector>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="18dp" android:ems="10" android:textColor="@drawable/edt1" > <requestFocus /> </EditText> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="26dp" android:ems="10" android:textColor="@drawable/edt1" /> <EditText android:id="@+id/editText3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText2" android:layout_below="@+id/editText2" android:layout_marginTop="30dp" android:ems="10" android:textColor="@drawable/edt1" /> </RelativeLayout>
3.LayerDrawable
包含drawable数组,根据索引,从大到小排列
例子1:层叠图片
layer1.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:src="@drawable/a11" android:gravity="left"/> </item> <item android:top="40dp" android:left="40dp"> <bitmap android:src="@drawable/a22" android:gravity="left" /> </item> <item android:top="80dp" android:left="80dp"> <bitmap android:src="@drawable/a33" android:gravity="left"/> </item> </layer-list>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="24dp" android:src="@drawable/layer1" /> </RelativeLayout>
例子2:网上找的,自定义样式
bg_bar.xml
<?xml version="1.0" encoding="utf-8"?> <!--自定义SeekBar的背景定义为:android:progressDrawable="@drawable/bg_bar"--> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 背景图 --> <item android:id="@+android:id/background" android:drawable="@drawable/bar_up" /> <!-- 第二进度图 --> <item android:id="@+android:id/SecondaryProgress" android:drawable="@drawable/bar_up" /> <!-- 进度度 --> <item android:id="@+android:id/progress" android:drawable="@drawable/bar_dn" /> </layer-list>
thumb_bar.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 自定义SeekBar的滑块定义为:android:thumb="@drawable/thumb_bar" --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 按下状态 --> <item android:state_pressed="true" android:drawable="@drawable/thumb_dn" /> <!-- 焦点状态 --> <item android:state_focused="true" android:drawable="@drawable/thumb_up" /> <!-- 默认状态 --> <item android:drawable="@drawable/thumb_up" /> </selector>
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_def" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="系统自带" /> <!-- max=100,代表它的取值范围是0-100,共101个值; progress=10,代表默认值是10 --> <SeekBar android:id="@+id/seekbar_def" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="10" /> <TextView android:id="@+id/tv_self" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义的" /> <!-- max=100,代表它的取值范围是0-100,共101个值; progress=20,代表默认值是20 progressDrawable,表示SeekBar的背景图片 thumbe,表示SeekBar的滑块图片 --> <SeekBar android:id="@+id/seekbar_self" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="20" android:progressDrawable="@drawable/bg_bar" android:thumb="@drawable/thumb_bar" /> </LinearLayout>
用到的一些图片资源
bar_dn.png
bar_up.png
thumb_dn.png
thumb_up.png
3.ShapeDrawable
用于定义一个几何图形
android:sharp=["rectangle"|"oval"|"line"|"ring"]
rectangle:矩形
oval:椭圆形
line:线条
ring:环形
例子1
shap1.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 填充色 橘黄色 --> <solid android:color="#FF7F24"/> <!-- 定义四个角的弧度 --> <corners android:radius="30dp" /> <!--定义描边的宽度和描边的颜色值 --> <stroke android:width="2dip" android:color="#7D26CD"/> </shape>
例子2
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 渐变 --> <gradient android:startColor="#FFF5EE" android:endColor="#FF1493" /> </shape>
例子3
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- 渐变 --> <gradient android:startColor="#FFF5EE" android:endColor="#FF1493" android:type="sweep" /> </shape>
4.ClipDrawable 从其他图片上,截图一部分
可通过调用setLevel来显示截取图片的区域大小,10000表示显示整张图片
例子
一个从左到右,从上到下
clip1.xml
<?xml version="1.0" encoding="utf-8"?> <!-- android:drawable 图片源 android:clipOrientation 方向 android:gravity 对其方式 --> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/pad" android:clipOrientation="vertical" android:gravity="top"> </clip>
clip2.xml
<?xml version="1.0" encoding="utf-8"?> <!-- android:drawable 图片源 android:clipOrientation 方向 android:gravity 对其方式 --> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/pad" android:clipOrientation="horizontal" android:gravity="left"> </clip>
MainActivity.java
public class MainActivity extends Activity { ClipDrawable clip1; ClipDrawable clip2; ImageView imageView1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); clip2 = (ClipDrawable) getResources().getDrawable(R.drawable.clip2); imageView1 = (ImageView) findViewById(R.id.imageView1); Button btn1 = (Button) findViewById(R.id.button1); Button btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { clip1 = (ClipDrawable) getResources().getDrawable( R.drawable.clip1); imageView1.setBackground(clip1); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { Message msg = new Message(); msg.what = 1; handler.sendMessage(msg); } }, 0, 1000); } }); btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { clip2 = (ClipDrawable) getResources().getDrawable( R.drawable.clip2); imageView1.setBackground(clip2); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { Message msg = new Message(); msg.what = 1; handler.sendMessage(msg); } }, 0, 1000); } }); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { if (clip1 != null) { clip1.setLevel(clip1.getLevel() + 1000); } if (clip2 != null) { clip2.setLevel(clip2.getLevel() + 1000); } } } }; }
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="从上到下" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="从左到右" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button1" android:src="@drawable/clip1" /> </RelativeLayout>
5.AnimataionDrawable 补间动画
透明度、缩放、位移、旋转 从开始到结束的变化
anim1.xml
<?xml version="1.0" encoding="utf-8"?> <!-- linear_interpolator匀速变换 --> <!-- accelerate_interpolator加速变换 --> <!-- decelerate_interpolator减速变换 --> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator" android:duration="5000"> <!-- 透明度从0 到100 --> <alpha android:fromAlpha="0" android:toAlpha="1" /> </set>
anim2.xml
<?xml version="1.0" encoding="utf-8"?> <!-- android:fillAfter保留最后状态 --> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator" android:duration="5000" android:fillAfter="true"> <!--android:pivotX="50%" android:pivotY="50%" 从中间位置开始动画--> <scale android:fromXScale="0" android:toXScale="1" android:fromYScale="0" android:toYScale="1" android:pivotX="50%" android:pivotY="50%" /> </set>
anim3.xml
<?xml version="1.0" encoding="utf-8"?> <!-- android:fillAfter保留最后状态 --> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator" android:duration="5000" android:fillAfter="true"> <translate android:fromXDelta="0" android:toXDelta="100" android:fromYDelta="0" android:toYDelta="100"/> </set>
anim4.xml
<?xml version="1.0" encoding="utf-8"?> <!-- android:fillAfter保留最后状态 --> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:duration="5000" android:fillAfter="true"> <!-- 从0度到360度旋转 --> <rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" /> </set>
MainActivity.java
public class MainActivity extends Activity implements OnClickListener { ImageView imageView1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView1 = (ImageView) findViewById(R.id.imageView1); Button btn1 = (Button) findViewById(R.id.button1); Button btn2 = (Button) findViewById(R.id.button2); Button btn3 = (Button) findViewById(R.id.button3); Button btn4 = (Button) findViewById(R.id.button4); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); } @Override public void onClick(View v) { if(v==findViewById(R.id.button1)){ //透明度 Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim1); imageView1.startAnimation(anim1); }else if(v==findViewById(R.id.button2)){ //透明度 Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim2); imageView1.startAnimation(anim1); }else if(v==findViewById(R.id.button3)){ //透明度 Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim3); imageView1.startAnimation(anim1); }else if(v==findViewById(R.id.button4)){ //透明度 Animation anim1=AnimationUtils.loadAnimation(MainActivity.this, R.drawable.anim4); imageView1.startAnimation(anim1); } } }
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="透明度" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button1" android:src="@drawable/pad" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/imageView1" android:layout_toRightOf="@+id/button1" android:text="缩放" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/button2" android:text="位移" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/button3" android:text="旋转" /> </RelativeLayout>
6.ProtertyAnimition属性动画
ainimi1.xml
<?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:propertyName="backgroundColor" android:duration="3000" android:valueFrom="#FFF5EE" android:valueTo="#FF1493" android:repeatCount="infinite" android:repeatMode="reverse" android:valueType="intType" />
MainActivity.java
public class MainActivity extends Activity{ ImageView imageView1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout l=(LinearLayout)findViewById(R.id.linearLayout1); l.addView(new MyView(this)); } public class MyView extends View { public MyView(Context context) { super(context); ObjectAnimator colorAnim=(ObjectAnimator)AnimatorInflater.loadAnimator(context, R.animator.anim1); colorAnim.setEvaluator(new ArgbEvaluator()); colorAnim.setTarget(this); colorAnim.start(); } } }
样式(style)和主题(theme)
1.样式
my_style.xml
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="style1"> <item name="android:textSize">20sp</item> <item name="android:textColor">#FF7F24</item> </style> <style name="style2" parent="style1"> <item name="android:background">#ee6</item> <item name="android:padding">8dp</item> <item name="android:textColor">#9ACD32</item> </style> </resources>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" style="@style/style1" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" style="@style/style1" android:ems="10" > <requestFocus /> </EditText> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/editText1" android:layout_marginTop="15dp" style="@style/style2" android:ems="10" /> <EditText android:id="@+id/editText3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/editText2" android:layout_marginTop="18dp" android:ems="10" /> </RelativeLayout>