以编程方式将按钮添加到 LinearLayout 无法正常工作
Adding Button to LinearLayout programmatically doesn't work properly
我有多个 dimens.xml 文件用于所有 "smallest width" 用于按钮大小。而且我还有多个版本用于主布局和按钮布局(用于 multi-screen 支持)。
我想以编程方式将多个按钮插入到布局中,并使用 xml 中的布局填充此按钮。
我是这样做的:
Button temp_button = null;
final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for(int i = 0; i < 7; i++) {
temp_button = (Button)inflater.inflate(R.layout.answer_letter_button, null);
temp_button.setTextColor(accent_color);
answer_letters.add(temp_button);
answer_panel.addView(answer_letters.get(i));
}
这是这些按钮的父布局:
<LinearLayout
android:id="@+id/answer_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@+id/letter_panel">
</LinearLayout>
和按钮布局:
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/answer_letter_button_size"
android:layout_height="@dimen/answer_letter_button_size"
android:text="M"
android:textStyle="bold"
android:textColor="@color/colorAccent"
android:textSize="@dimen/answer_letter_button_text_size"
android:layout_margin="@dimen/answer_letter_button_margin_size"
android:background="@drawable/shaped_button" />
我想看的:
我实际看到的:
我做错了什么,有人告诉我吗?
对不起,我表达有误
我的意思是,结果按钮的大小有问题。主要是一个按钮的宽度。
您必须添加 layout_weight
参数并将其设置为 1
同时将 layout_width
和 layout_height
更改为 wrap_content
,您不能添加 7 个项目并从 dimens 设置高度和宽度。你的方式永远是错误的,结果也是如此。仅从 dimens 设置 textSize,它就是您搜索的内容。
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="M"
android:textStyle="bold"
android:textColor="@color/colorAccent"
android:textSize="@dimen/answer_letter_button_text_size"
android:layout_margin="@dimen/answer_letter_button_margin_size"
android:background="@drawable/shaped_button" />
并在您的父布局中添加,android:weightSum="7"
。
我有多个 dimens.xml 文件用于所有 "smallest width" 用于按钮大小。而且我还有多个版本用于主布局和按钮布局(用于 multi-screen 支持)。
我想以编程方式将多个按钮插入到布局中,并使用 xml 中的布局填充此按钮。
我是这样做的:
Button temp_button = null;
final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for(int i = 0; i < 7; i++) {
temp_button = (Button)inflater.inflate(R.layout.answer_letter_button, null);
temp_button.setTextColor(accent_color);
answer_letters.add(temp_button);
answer_panel.addView(answer_letters.get(i));
}
这是这些按钮的父布局:
<LinearLayout
android:id="@+id/answer_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@+id/letter_panel">
</LinearLayout>
和按钮布局:
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/answer_letter_button_size"
android:layout_height="@dimen/answer_letter_button_size"
android:text="M"
android:textStyle="bold"
android:textColor="@color/colorAccent"
android:textSize="@dimen/answer_letter_button_text_size"
android:layout_margin="@dimen/answer_letter_button_margin_size"
android:background="@drawable/shaped_button" />
我想看的:
我实际看到的:
我做错了什么,有人告诉我吗?
对不起,我表达有误 我的意思是,结果按钮的大小有问题。主要是一个按钮的宽度。
您必须添加 layout_weight
参数并将其设置为 1
同时将 layout_width
和 layout_height
更改为 wrap_content
,您不能添加 7 个项目并从 dimens 设置高度和宽度。你的方式永远是错误的,结果也是如此。仅从 dimens 设置 textSize,它就是您搜索的内容。
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="M"
android:textStyle="bold"
android:textColor="@color/colorAccent"
android:textSize="@dimen/answer_letter_button_text_size"
android:layout_margin="@dimen/answer_letter_button_margin_size"
android:background="@drawable/shaped_button" />
并在您的父布局中添加,android:weightSum="7"
。