以编程方式根据最大宽度(或高度)调整 android 按钮的大小
Resizing android button programmatically respect to maximum width (or height)
我想调整以编程方式添加到我的 Android 应用程序(Java 代码)的按钮的大小。它们以默认的宽度和高度添加到布局中(因为没有内容)。我希望它们调整到屏幕尺寸的 1/9 以填满整个屏幕(连续 9 个按钮以填满屏幕宽度)。我试图获取屏幕宽度(或父容器宽度,因为它适合屏幕宽度)。但是只有0dp。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/tabMain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
作为 LinearLaout(宽度和高度 match_parent)的子项添加到 tabMain(ConstraintLayout 中的 LinearLayout)的按钮
根 ConstraintLayout 大小是全屏宽度,但 LinearLayout tabMain 只是按钮 9x 按钮宽度(插入 9 个按钮的原因)。
尝试使用宽度为 match_parent 且权重总和为 9 的水平线性布局,
在此布局中动态添加按钮后,将它们的权重设置为 1,将宽度设置为 0dp。这应该有效。
//我已经为你实现了这个
这是 java 代码:
Button[] buttons=new Button[9];
LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout);
for (int i=0;i<=8;i++){
buttons[i]=new Button(MainActivity.this);
buttons[i].setText("Button "+(i+1));
buttons[i].setLayoutParams (new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1));
ll.addView(buttons[i], new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1));
}
布局如下:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:orientation="horizontal"
android:id="@+id/buttonlayout"
android:weightSum="9"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
</RelativeLayout>
我想调整以编程方式添加到我的 Android 应用程序(Java 代码)的按钮的大小。它们以默认的宽度和高度添加到布局中(因为没有内容)。我希望它们调整到屏幕尺寸的 1/9 以填满整个屏幕(连续 9 个按钮以填满屏幕宽度)。我试图获取屏幕宽度(或父容器宽度,因为它适合屏幕宽度)。但是只有0dp。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/tabMain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
作为 LinearLaout(宽度和高度 match_parent)的子项添加到 tabMain(ConstraintLayout 中的 LinearLayout)的按钮
根 ConstraintLayout 大小是全屏宽度,但 LinearLayout tabMain 只是按钮 9x 按钮宽度(插入 9 个按钮的原因)。
尝试使用宽度为 match_parent 且权重总和为 9 的水平线性布局,
在此布局中动态添加按钮后,将它们的权重设置为 1,将宽度设置为 0dp。这应该有效。
//我已经为你实现了这个
这是 java 代码:
Button[] buttons=new Button[9];
LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout);
for (int i=0;i<=8;i++){
buttons[i]=new Button(MainActivity.this);
buttons[i].setText("Button "+(i+1));
buttons[i].setLayoutParams (new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1));
ll.addView(buttons[i], new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1));
}
布局如下:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:orientation="horizontal"
android:id="@+id/buttonlayout"
android:weightSum="9"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
</RelativeLayout>