android 在布局中合理的使用tag标签的好处

有时候相同的按钮页面的切换,在代码中须要进行多个点击的分开的处理,这些实际上是不用这样的操做的,在xml布局中使用tag标签能够很好的处理这些问题;简化操做android

 布局文件以下:git

 1 <LinearLayout
 2         android:id="@+id/colors"
 3         android:layout_width="match_parent"
 4         android:layout_height="48dip"
 5         android:layout_alignParentBottom="true"
 6         android:layout_marginBottom="8dip"
 7         android:layout_marginLeft="4dip"
 8         android:layout_marginRight="4dip"
 9         android:orientation="horizontal" >
10 
11         <ImageView
12             android:layout_width="0dip"
13             android:layout_height="match_parent"
14             android:layout_margin="4dip"
15             android:layout_weight="1"
16             android:background="#FF666666"
17             android:onClick="onColorClicked"
18             android:tag="#FF666666" />
19 
20         <ImageView
21             android:layout_width="0dip"
22             android:layout_height="match_parent"
23             android:layout_margin="4dip"
24             android:layout_weight="1"
25             android:background="#FF96AA39"
26             android:onClick="onColorClicked"
27             android:tag="#FF96AA39" />
28 
29         <ImageView
30             android:layout_width="0dip"
31             android:layout_height="match_parent"
32             android:layout_margin="4dip"
33             android:layout_weight="1"
34             android:background="#FFC74B46"
35             android:onClick="onColorClicked"
36             android:tag="#FFC74B46" />
37 
38         <ImageView
39             android:layout_width="0dip"
40             android:layout_height="match_parent"
41             android:layout_margin="4dip"
42             android:layout_weight="1"
43             android:background="#FFF4842D"
44             android:onClick="onColorClicked"
45             android:tag="#FFF4842D" />
46 
47         <ImageView
48             android:layout_width="0dip"
49             android:layout_height="match_parent"
50             android:layout_margin="4dip"
51             android:layout_weight="1"
52             android:background="#FF3F9FE0"
53             android:onClick="onColorClicked"
54             android:tag="#FF3F9FE0" />
55 
56         <ImageView
57             android:layout_width="0dip"
58             android:layout_height="match_parent"
59             android:layout_margin="4dip"
60             android:layout_weight="1"
61             android:background="#FF5161BC"
62             android:onClick="onColorClicked"
63             android:tag="#FF5161BC" />
64     </LinearLayout>

布局的效果图:github

点击不一样的颜色的点击切换,更改对应的控件的颜色;布局

代码的实现以下:ui

1 public void onColorClicked(View v) {
2 
3         int color = Color.parseColor(v.getTag().toString());
4         changeColor(color);
5 
6     }

 

 

 1 private void changeColor(int newColor) {
 2 
 3         tabs.setIndicatorColor(newColor);
 4 
 5         // change ActionBar color just if an ActionBar is available
 6         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
 7 
 8             Drawable colorDrawable = new ColorDrawable(newColor);
 9             Drawable bottomDrawable = getResources().getDrawable(R.drawable.actionbar_bottom);
10             LayerDrawable ld = new LayerDrawable(new Drawable[] { colorDrawable, bottomDrawable });
11 
12             if (oldBackground == null) {
13 
14                 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
15                     ld.setCallback(drawableCallback);
16                 } else {
17                     getActionBar().setBackgroundDrawable(ld);
18                 }
19 
20             } else {
21 
22                 TransitionDrawable td = new TransitionDrawable(new Drawable[] { oldBackground, ld });
23 
24                 // workaround for broken ActionBarContainer drawable handling on
25                 // pre-API 17 builds
26                 // https://github.com/android/platform_frameworks_base/commit/a7cc06d82e45918c37429a59b14545c6a57db4e4
27                 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
28                     td.setCallback(drawableCallback);
29                 } else {
30                     getActionBar().setBackgroundDrawable(td);
31                 }
32 
33                 td.startTransition(200);
34 
35             }
36 
37             oldBackground = ld;
38 
39             // http://stackoverflow.com/questions/11002691/actionbar-setbackgrounddrawable-nulling-background-from-thread-handler
40             getActionBar().setDisplayShowTitleEnabled(false);
41             getActionBar().setDisplayShowTitleEnabled(true);
42 
43         }

           currentColor = newColor;spa

    }3d

相关文章
相关标签/搜索