我在使用布局时遇到问题,我有一个线性布局(可能是相对布局或表格布局),当加载活动时,它将包含未定义数量的按钮。这意味着,在创建活动时将确定按钮的数量。问题是,我试图将它们全部放在一条线上(具有中心重力)而不改变每个按钮'宽度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,它们的宽度最终变得巨大。有没有办法通过代码实现这一目标?感谢。
答案 0 :(得分:0)
button.setLayoutParams (new LayoutParams(50, LayoutParams.WRAP_CONTENT)