2013-02-27 81 views
1

我有一個佈局部分的問題。我以編程方式添加按鈕,因爲我想要做一些像breadcrump的事情。我的解決方案很好。如果我在第一個活動中,我會顯示一個按鈕。如果我去秒,我會顯示兩個按鈕。 這是代碼:帶到android的前面部分佈局

public class TabsGenerator extends LinearLayout{ 



    public TabsGenerator(Context context) { 
     super(context); 
    } 

    public View addNewLinearLayout(Context context, ArrayList<String> descriptions) { 
     final HorizontalScrollView horizontalView = new HorizontalScrollView(context); 
     LinearLayout linearLayout = new LinearLayout(context); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     params.height = 60; 
     linearLayout.setLayoutParams(params); 
     horizontalView.setLayoutParams(params); 
     postDelayed(new Runnable() { 
      public void run() { 
       horizontalView.fullScroll(HorizontalScrollView.FOCUS_RIGHT); 
      } 
     }, 100L); 
     linearLayout.setGravity(Gravity.TOP); 
     List<View> components = getButtons(context, descriptions); 
     for(View component : components) { 
      linearLayout.addView(component); 
     } 
     horizontalView.addView(linearLayout); 

     return horizontalView; 
    } 
    public List<View> getButtons(Context context, ArrayList<String> descriptions) { 
     List<View> buttons = new ArrayList<View>(); 
     for(int i = 0; i < descriptions.size(); i++) { 
      buttons.add(createButton(context,i, descriptions)); 
     } 
     return buttons; 
    } 

    public View createButton(final Context context, final int i, final ArrayList<String> descriptions){ 

     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
      params.leftMargin = -20; 
     final Button button = new Button(context); 
     button.setText(SecondActivity.descriptions.get(i)); 
     button.setBackgroundDrawable(getResources().getDrawable(R.drawable.paseknawigacji)); 
     button.setHorizontallyScrolling(true); 
     button.setEllipsize(TruncateAt.END); 
     button.setSingleLine(); 
     button.setWidth(20); 
     if(i==1) 
      button.bringToFront(); 
     button.setLayoutParams(params); 
     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       ActivityManager am = (ActivityManager) context. 
         getSystemService(Activity.ACTIVITY_SERVICE); 
       String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName(); 
       String className = am.getRunningTasks(1).get(0).topActivity.getClassName(); 
       final String StringClassname = packageName+"."+descriptions.get(i); 
       Class<?> c = null; 
       if(StringClassname != null) { 
        try { 
         c = Class.forName(StringClassname); 
        } catch (ClassNotFoundException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 

       Intent intent = new Intent(); 
       intent.setClassName(context,StringClassname); 
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       if(!(StringClassname.contains(className))){ 
        for(int j = 0; j<descriptions.size()-1;j++) 
         if(i<descriptions.size()-1) 
          descriptions.remove(i+1); 

        context.startActivity(intent); 

       } 
      } 
     }); 
     return button; 
    } 
} 

我有一個問題,因爲添加按鈕的佈局,但每個按鈕已經三角形結束。當我添加第二個按鈕時,他會覆蓋這個形狀。 這是它看起來的樣子: enter image description here 我想結束每一個按鈕。我該怎麼做?

編輯:也許是其他方式來創建android的breadcrup?

回答

0

嘗試添加按鈕以相反的順序

您的代碼

List<View> components = getButtons(context, descriptions); 
    for(View component : components) { 
     linearLayout.addView(component); 
    } 

現在以相反的順序

List<View> components = getButtons(context, descriptions); 
    for(int i = components.size() - 1; i >= 0; i --) { 
     View component = components.get (i); 
     linearLayout.addView(component); 
    } 

(代碼不編譯,可能有錯誤)

+0

我檢查你的解決方案,但仍是同樣的結果 – user1302569 2013-02-27 09:01:44

0

試這

thirdButton.bringtoFront(); 
SecondButton.bringToFront(); 

您會看到第三個和第二個按鈕的三角形狀。

希望如此,這將工作

+0

正如你可以在代碼中我嘗試帶來正面按鈕,指數1,但沒有結果 – user1302569 2013-02-27 08:58:00

+0

我認爲當你再次調用createButton()函數...近期按鈕查看哪些被創造出來... – 2013-02-27 09:03:55

0

我不認爲你將與一個線性佈局工作,我已經注意到,使用帶來正面的線性佈局時,可以自動設置它在總端(例如它不再按鈕1按鈕2按鈕3,但按鈕1按鈕3按鈕2)。您需要使用相對佈局或類似的東西。這可能會爲您的代碼添加一些邏輯,但是否則應該可以。