android遍歷控制項
⑴ Android怎麼對控制項數組的每一個元素賦值
Android可以遍歷每一個控制項,使用instanceof判斷類型進行相應的賦值。
比如:Button button = new Button(this);
ImageView textView = new ImageView(this);
View[] views = new View[] {button, textView};
for (View itemview : views) {
if (itemview instanceof TextView) {
System.out.println("This is a imageView");
}
if (itemview instanceof Button) {
System.out.println("This is a button");
}
}
但是要注意一下繼承關系,比如Button extends TextView。因此Button 也會走TextView的判斷方法,因此需要把子類判斷放在前面,得到合適的即continue;
for (View itemview : views) {
if (itemview instanceof Button) {
System.out.println("This is a button");
continue
}
if (itemview instanceof TextView) {
System.out.println("This is a TextView");
continue;
}
if (itemview instanceof TextView) {
System.out.println("This is a imageView");
continue;
}
}
⑵ android的ViewpPger中,如何遍歷得到下面布局問加你中的所有控制項,方便對空間進行統一管理
你可創建一個集合來保存你的幾個布局:private ArrayList<View> pageViews;
pageViews = new ArrayList<View>();
pageViews.add(v1);
pageViews.add(v2);
pageViews.add(v3);
pagerAdapter = new ViewPagerAdapter(pageViews);
這里創建Adapter的時候把這個集合傳進去。
然後:uiControl = new UIControlForIntegrate(handler, OnAppPressedListener,
this);
uiControl.setResource(pageViews);//控制ui的地方也把這個集合傳進去。這樣它們指向的都是一個對象。你可以很方便的控制UI。或者你沒有控制UI的類。直接在你的主類裡面也可直接用這個集合里的View.
⑶ android如何獲得界面上所有的控制項還要遍歷,我只能獲得當層的,但是我想獲得全部控制項……
先拿根布局啊,再getChild(), 一層層遍歷下去唄。
你的需求很怪。
⑷ android遍歷界面上的所有控制項後,如何判斷控制項是什麼類型
可以通過它的類名來判斷:v.getClassName() == "Button"
也可以通過instanceof判斷:v instanceof Button
public class Main extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout loginLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);
String pa="";//遍歷所有控制項
for (int i = 0; i < loginLayout.getChildCount(); i++)
{
View v=loginLayout.getChildAt(i);
//如何判斷是Button或者是TextBox
if(){
Object v = tabWidget.getChildAt(i);
if (v instanceof RelativeLayout)
{
}
}
}
}
⑸ Android中selector使用詳解
選擇器在android中使用的非常廣泛,點擊反饋、選中、使能、聚焦等狀態切換都會用到選擇器。
一:下面是一個簡單的選擇器:
android:enterFadeDuration="200" 、android:exitFadeDuration="200":進入新狀態或退出舊狀態時會有一個200毫秒的漸變動畫。這兩個屬性使用的比較常見,可以使選擇器的狀態切換更加平滑。
以下幾個都是Drawable的屬性。
android:autoMirrored="true"對應drawable.setAutoMirrored(),這個屬性表示是否將drawable鏡像顯示,只有在從右往左布局的環境下才會生效。將此屬性設置成true,並將語言調節成阿拉伯語便可以看到效果。
android:dither="true"對應drawable.setDither(),這個屬性表示是否對圖像進行抖動處理。當圖像的bit-color較少時,通過顏色值的抖動來增加可用顏色數量,並保持較好的顯示效果。
android:visible="true" 對應drawable.setVisible(),設置Drawable是否可見,一般不會影響Drawable的行為,但是它是Drawable是否運行了動畫的一個暗示。例如:AnimationDrawable可以通過這個方法啟動或者停止動畫。
剩下兩個屬性對應DrawableContainer$DrawableContainerState裡面的屬性(DrawableContainer是Drawable的一個子類,DrawableContainerState是DrawableContainer的內部類)。
android:constantSize="true":當選擇器各個狀態的圖片大小不一時,設置為 true表示以最大的圖片的尺寸顯示,設置為false以默認的圖片的尺寸顯示(控制項大小會對現象有影響,需要是包裹內容的)。
android:variablePadding="false" :默認為false,這個屬性意義不大,通常不去設置。
二:Item的各種狀態,理解起來相對簡單,都可以從屬性的名字去理解其含義,例如:
狀態為加速的時候會顯示ic_launcher_m圖片,那麼是什麼加速呢?這就需要自己去分析一下,其實這里指的加速是對View的軟體加速或硬體加速。
當給View設置background、foreground或ImageView設置src時只能寫android:drawable="id":
當給文字顏色添加選擇器的時候必須要寫android:color="ARGB|RGB顏色值"
三:注意安卓程序在讀取選擇器文件時,是從上往下一個一個節點進行遍歷的,程序會選擇符合當前控制項狀態的第一個Item的內容。如果一個Item不寫任何狀態,表示它任何狀態都符合, 所以一般最後一個Item是不會寫任何狀態的(就像if(){}else if(){}else{}語句一樣,最後一個包含了剩下的所有情況)。
四:選擇器的Item和animated-rotate一起使用。
五:動態創建選擇器
動態創建一個簡單的選擇器:
用一張圖片,通過對圖片的著色創建選擇器:
創建矢量圖選擇器:
TextView文字顏色選擇器:
部分常用狀態數組:
⑹ android中怎麼遍歷自定義listview控制項中的checkbox
listview 本身就是一個循環,只需要定義CheckBox cb=(CheckBox)findViewById(R.id.CheckboxXX);就可以把checkbox全部遍歷出來。
⑺ android 遍歷所有控制項
獲取總得TabLayout, 強轉成ViewGroup,傳入下面方法
private void getButtons(ViewGroup viewGroup) {
if (viewGroup == null) {
return;
}
int count = viewGroup.getChildCount();
for (int i = 0; i < count; i++) {
View view = viewGroup.getChildAt(i);
if (view instanceof Button) { // 若是Button記錄下
Button newDtv = (Button) view;
} else if (view instanceof ViewGroup) {
// 若是布局控制項(LinearLayout或RelativeLayout),繼續查詢子View
this.getButtons((ViewGroup) view);
}
}
}
⑻ android怎麼樣獲取當前activity下所有的textview控制項
把設置的方法放在一個方法裡面,然後把Id當做參數傳進去,比如R.id.text1的話,可以這樣用一個變數String
baseId="R.id.",這個方法可以寫成setConfig(String
strId){String
currentId=baseId+strId;
//後面的代碼按下面來
}
然後再用下面的方法
public
static
int
getResourdIdByResourdName(Context
context,
String
ResName){
int
resourceId
=
0;
try
{
Field
field
=
R.drawable.class.getField(ResName);
field.setAccessible(true);
try
{
resourceId
=
field.getInt(null);
}
catch
(IllegalArgumentException
e)
{
log.showLogDebug("IllegalArgumentException:"
+
e.toString());
}
catch
(IllegalAccessException
e)
{
log.showLogDebug("IllegalAccessException:"
+
e.toString());
}
}
catch
(NoSuchFieldException
e)
{
log.showLogDebug("NoSuchFieldException:"
+
e.toString());
}
return
resourceId;
}將currentId作為參數傳入就可以了,這時在調用findViewById找,,,
採納啊,大哥,寫了這么多
⑼ Android中怎麼遍歷ListView,將數據帶到下一頁
java">tel.setText(t);
這句話,t應該是數字類型吧,比如「132656444」這種,遇到這種情況,Android會認為你的這個字串是某個資源的ID的,然後根據這個ID去尋找資源,找不到當然空指針了。你可以去R.java裡面找找,就知道每個資源對應一個ID.你就把這句話改成
tel.setText(String.valueOf(t));
應該就沒問題了~,希望對你有幫助哈。