1

レイアウトの一部に問題があります。ブレッドクラムのようなことをしたいので、プログラムでボタンを追加しています。私のソリューションはうまくいきます。最初のアクティビティの場合は、ボタンを 1 つ表示します。2 番目に移動すると、2 つのボタンが表示されます。これはコードです:

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;
    }
}

ボタンがレイアウトに追加されたので問題がありますが、すべてのボタンが三角形で終了しています。2番目のボタンを追加すると、彼はこの形状をカバーします. これはどのように見えるかです: ここに画像の説明を入力 私はすべてのボタンを最前面に持ってきたい. どうすればそれができますか?

編集:Androidでブレッドクラップを作成する他の方法はありますか?

4

4 に答える 4

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);
    }

(コードがコンパイルされていないため、エラーが発生する可能性があります)

于 2013-02-27T08:29:44.737 に答える
0

これを試して

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

3 番目と 2 番目のボタンの三角形が表示されます。

これがうまくいくことを願っています

于 2013-02-27T08:31:14.843 に答える
0

線形レイアウトで前面に出すを使用すると、自動的に合計の終わりに設定されることに気付いたので、線形レイアウトでは機能しないと思います(たとえば、ボタン 1 ボタン 2 ボタン 3 ではなく、ボタン 1 ボタン 3 ボタン 2 )。Relative レイアウトなどを使用する必要があります。これにより、コードに少しロジックが追加される場合がありますが、それ以外は問題ありません。

于 2013-03-11T16:46:56.167 に答える