2013-02-27 3 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 Я хочу довести до конца окончание каждой кнопки. Как я могу это сделать?

Редактировать: Может быть, это другой способ создать breadcrup в android?

ответ

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

0

Ьгу это

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

Ваша воля увидит треугольную форму третьей и второй кнопок.

Надежда так что это будет работать

+0

Как вы можете видеть в коде, я пытаюсь ввести кнопку фронта с индексом 1, но без результата – user1302569

+0

Я думаю, когда вы снова вызываете функцию createButton() ... недавнюю кнопку, которая создано ... –

0

Я не думаю, что ваш будет работать с линейной планировкой, как я заметил, что при использовании на передний план в линейной компоновке вы автоматически установить его на общую конце (например, его не больше кнопка 1 кнопка 2 кнопка 3, но кнопка 1 кнопка 3 кнопка 2). Вам нужно будет использовать относительную компоновку или что-то подобное. Это может добавить немного логики к вашему коду, но в противном случае это должно быть хорошо.

Смежные вопросы