android - ScrollView 填满整个屏幕
问题描述
我正在编写一个具有垂直父 LinearLayout 的简单 android 应用程序。作为孩子,我想要一个 ScrollView、两个编辑文本,然后是一个按钮。
scrollView 内部是许多按钮。当我在其中放置许多按钮时,ScollView 会占据整个屏幕。我仍然希望 EditTexts 和 final 按钮可见。
public class MainActivity extends AppCompatActivity
{
LinearLayout mainLayout;
ScrollView scrollView;
LinearLayout fileSelector;
EditText name;
EditText password;
Button submit;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mainLayout = new LinearLayout(this);
mainLayout.setOrientation(LinearLayout.VERTICAL);
fileSelector = new LinearLayout(this);
fileSelector.setOrientation(LinearLayout.VERTICAL);
scrollView = new ScrollView(this);
scrollView.addView(fileSelector);
mainLayout.addView(scrollView);
name = new EditText(this);
password = new EditText(this);
submit = new Button(this);
submit.setText("Login");
for(int i=0; i<100; i++)
{
Button b = new Button(this);
b.setText("hello");
fileSelector.addView(b);
}
mainLayout.addView(name);
mainLayout.addView(password);
mainLayout.addView(submit);
setContentView(mainLayout);
}
public void onClick(View v)
{
}
}
我想以编程方式了解解决方案。
解决方案
更改此行:
mainLayout.addView(scrollView);
为此:
LinearLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0);
params.weight = 1;
mainLayout.addView(scrollView, params);
LinearLayout 支持weight的概念,它将根据父 LinearLayout 中有多少可用空间来“拉伸”视图。
在这种情况下,ScrollView
当您将两个 EditText 和提交按钮保留为正常大小时,您将其设为零像素。这不会填满 LinearLayout,因此会应用权重。所有具有权重的视图都会根据它们的权重比率在它们之间分配额外的空间,但是这里我们只有一个具有权重的视图,因此它只会获得所有额外的空间。
这意味着您的 EditTexts 和提交按钮将始终可见,并且 ScrollView 将获得剩余的空间,无论屏幕大小。
推荐阅读
- javascript - 附加到日期选择器和 html.validationmessagefor 的日期字段未激活验证脚本
- xml - 使用 Google Apps 脚本解析 XML
- python - 将 Django 过滤器转换为 RAW SQL 查询
- python - 重命名熊猫数据框中的“名称”值
- r - 如何逐年从一列中查找多个 ID 的频率并绘图?
- javascript - 比较和编辑数组
- android - Android - Dagger2 和 Hilt 的问题 - 无法提供 ViewModelProvider.Factory
- java - 如何在上一次点击和最近一次点击之间划一条线?
- android - 如何以编程方式从状态栏中删除活动通知?
- go - Curl 命令没有释放服务器资源 GoLang