热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Android中排列多行小部件-ArrangingRowsofWidgetsinAndroid

本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。

我正在尝试使用布局文件来排列多行的TextView和Button。每一行应包含一个占屏幕约2/3宽度的TextView和一个占屏幕约1/3宽度的Button。具体布局如下:



第1行:[TextView(屏幕的~2/3)] [按钮(屏幕的~1/3)]


第2行:[TextView(屏幕的~2/3)] [按钮(屏幕的~1/3)]


第3行:[TextView(屏幕的~2/3)] [按钮(屏幕的~1/3)]


第4行:[TextView(屏幕的~2/3)] [按钮(屏幕的~1/3)]


第5行:[TextView(屏幕的~2/3)] [按钮(屏幕的~1/3)]



我对此感到困惑,不确定应该使用哪种布局方式。是否可以使用TableLayout或RelativeLayout?能否提供一些XML示例代码?非常感谢您的帮助!



解决方案



是的,你可以使用LinearLayout通过设置android:weightSum属性来实现这一布局。以下是一个单行布局的示例:




xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="1.0" >

android:text="左侧文本"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.67" />

android:text="右侧按钮"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.33" />




如果你有多个布局文件(例如main.xml和list_template.xml),可以通过以下方式动态加载这些布局:



main.xml




android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">

android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/mainLayout"/>




list_template.xml




xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="100" >

android:text="左侧文本"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="67"
android:id="@+id/list_textView" />

android:text="右侧按钮"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="33"
android:id="@+id/list_button" />




接下来,可以在Activity中动态加载并填充这些布局:



public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

LinearLayout mainLayout = findViewById(R.id.mainLayout);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

for (int i = 0; i <5; i++) {
View tempView = inflater.inflate(R.layout.list_template, null);

TextView textView = tempView.findViewById(R.id.list_textView);
textView.setText("TextView " + i);

Button button = tempView.findViewById(R.id.list_button);
button.setText("Button " + i);
button.setId(i);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button " + v.getId() + " clicked", Toast.LENGTH_SHORT).show();
}
});

mainLayout.addView(tempView);
}
}
}

推荐阅读
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文深入探讨了 Python 中的循环结构(包括 for 循环和 while 循环)、函数定义与调用,以及面向对象编程的基础概念。通过详细解释和代码示例,帮助读者更好地理解和应用这些核心编程元素。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 中科院学位论文排版指南
    随着毕业季的到来,许多即将毕业的学生开始撰写学位论文。本文介绍了使用LaTeX排版学位论文的方法,特别是针对中国科学院大学研究生学位论文撰写规范指导意见的最新要求。LaTeX以其精确的控制和美观的排版效果成为许多学者的首选。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文探讨了在Java中实现系统托盘最小化的两种方法:使用SWT库和JDK6自带的功能。通过这两种方式,开发者可以创建跨平台的应用程序,使窗口能够最小化到系统托盘,并提供丰富的交互功能。 ... [详细]
  • 优化 Android 按钮状态下的背景和文本颜色变化
    本文介绍如何通过 Android 的 Selector 实现按钮在不同状态下(如按压)的背景和文本颜色动态变化。我们将详细讲解实现步骤,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了Python中函数的基本概念,包括函数的定义与调用、文档注释、参数传递(形参与实参)、返回值以及函数嵌套。通过具体示例和解释,帮助读者掌握函数在编程中的应用。 ... [详细]
author-avatar
白羊黔中草
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有