" Inteligent"调整布局大小?

时间:2016-06-07 00:29:19

标签: android layout

我在使用布局时遇到问题,我有一个线性布局(可能是相对布局或表格布局),当加载活动时,它将包含未定义数量的按钮。这意味着,在创建活动时将确定按钮的数量。问题是,我试图将它们全部放在一条线上(具有中心重力)而不改变每个按钮'宽度UNTIL其中一个到达屏幕边缘。换句话说,我希望按钮JUST在其中至少有一个到达屏幕边缘时调整大小。这是因为我无法确定他们将要使用的空间,因为他们没有被创建。

我的实际线性布局:

    <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:id="@+id/linearLayout_1"
    android:layout_above="@+id/linearLayout_2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="30dp"
    android:orientation="horizontal"
    android:gravity="center"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true">

</LinearLayout>

创建按钮的代码片段:

    protected void hacerVisiblesRespuesta(){
    ViewGroup linearLayout = (ViewGroup) findViewById(R.id.linearLayout);
    assert linearLayout != null;
    int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,40, getResources().getDisplayMetrics());
    for(int i = 0; i < longuitudPalabra; i++){
        String boton = "btn_rsp" + Integer.toString(i+1);
        Button bt = new Button(this);
        bt.setText("");
        bt.setId(getResourceId(boton,"id",getPackageName()));
        bt.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT
                , height
                , 1.0f));
        bt.setTextColor(Color.BLACK);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickBotonRespuesta(v);
            }
        });
        bt.setVisibility(View.VISIBLE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            bt.setBackground(getDrawable(R.drawable.bgbtnrsp));
        }else{
            //bt.setBackgroundDrawable(getDrawable(R.drawable.bgbtnrsp));
        }
        bt.setTextSize(20);
        Typeface typeFace= Typeface.createFromAsset(getAssets(),"fonts/Montserrat-Regular.ttf");
        bt.setTypeface(typeFace);
        linearLayout.addView(bt);
    }
}

我尝试了很多东西,其中一个是制作按钮&#39;宽度变量与重量属性。问题是如果有少量的按钮,让我们说4,它们的宽度最终变得巨大。有没有办法通过代码实现这一目标?感谢。

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

button.setLayoutParams (new LayoutParams(50, LayoutParams.WRAP_CONTENT)