- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用单元格和行来填充表格布局以填充整个屏幕。像这样:
http://imageshack.us/photo/my-images/69/device20120201005942.png/
在Eclipse中的Graphical Layout窗口中设计的这个布局给出了我想要的(android:layout_weight解决垂直拉伸(stretch)):
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:stretchColumns="*" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_weight="1">
<ImageView
android:id="@+id/imageView1"
android:layout_gravity="center"
android:src="@drawable/add" />
<ImageView
android:id="@+id/imageView2"
android:layout_gravity="center"
android:src="@drawable/bound" />
<ImageView
android:id="@+id/imageView3"
android:layout_gravity="center"
android:src="@drawable/cod" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageView4"
android:layout_gravity="center"
android:src="@drawable/delete" />
<ImageView
android:id="@+id/imageView5"
android:layout_gravity="center"
android:src="@drawable/delete2" />
<ImageView
android:id="@+id/imageView6"
android:layout_gravity="center"
android:src="@drawable/floppy" />
</TableRow>
</TableLayout>
我正在尝试在代码中创建相同的外观,但到目前为止失败了。这是我的 Activity 的 oncreate:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tablelo);
TableLayout tl = (TableLayout) findViewById(R.id.table);
Log.d(TAG, "Width :" + tl.getWidth());
for (int row = 0; row < 3; row++) {
TableRow tr = new TableRow(this);
tr.setId(100 + row);
for (int cell = 0; cell < 3; cell++) {
ImageView image = new ImageView(this);
image.setImageResource(imageIDs[row * 3 + cell]);
tr.addView(image);
}
tr.setGravity(Gravity.CENTER);
LayoutParams params = new TableRow.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1);
tr.setLayoutParams(params);
tl.addView(tr, params);
}
tl.setStretchAllColumns(true);
}
我缺少设置 ImageView 引力的代码,但这种尝试会导致崩溃:
image.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER));
这段代码创建了 3 行,每行水平拉伸(stretch)但不是垂直拉伸(stretch):
http://imageshack.us/photo/my-images/835/gridc.png/
我在这里找不到我缺少的东西。我还尝试在设计器中准备一个表行,并在运行时膨胀并添加到表中,但结果没有改变。
所以,不知何故,我想以编程方式获得我可以使用编辑器创建的相同布局。
请帮忙!
最佳答案
我花了一个半小时试图弄清楚发生了什么。然后我找到了 :) 这是我的 TableActivity 的完整列表,请注意表格行和图像的不同 LayoutParams 的用法:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.widget.*;
import android.widget.TableLayout;
import android.widget.TableRow;
public class TableActivity extends Activity {
private static final String TAG="TableActivity";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.table_activity);
TableLayout tl = (TableLayout) findViewById(R.id.table);
Log.d(TAG, "Width :" + tl.getWidth());
for (int row = 0; row < 3; row++) {
TableRow tr = new TableRow(this);
tr.setId(100 + row);
//Note that you must use TableLayout.LayoutParams,
//since the parent of this TableRow is a TableLayout
TableLayout.LayoutParams params = new TableLayout.LayoutParams(
TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT, 1f);
for (int cell = 0; cell < 3; cell++) {
ImageView image = new ImageView(this);
image.setImageResource(android.R.drawable.btn_plus);
//Note that here you must use TableRow.LayoutParams
//since TableRow is the parent of this ImageView
TableRow.LayoutParams imageParams = new TableRow.LayoutParams();
//And this is how you set the gravity:
imageParams.gravity = Gravity.CENTER;
image.setLayoutParams(imageParams);
tr.addView(image);
}
tr.setLayoutParams(params);
tl.addView(tr, params);
}
tl.setStretchAllColumns(true);
}
}
table_activity.xml 只是一个空表布局:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="match_parent">
</TableLayout>
所以简而言之,最简单的解决方案是使用在 xml 文件中定义的布局 :) 但是如果你必须使用 JAVA,你必须小心你正在使用的 LayoutParams 中的哪一个,你应该总是使用那个 View 的父级。
关于android - 使用 android :layout_weight programmatically 填充 TableLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088553/
我的问题分为两部分 1) 我想将文件名分配给 FileUpload 控件然后保存它,但问题是它是只读的 FileUpload1.FileName="ClientMachine\\Ima
我目前正在开发一个适用于 iOS 和 macOS 的跨平台应用程序,使您的 iOS 设备可以用作触控板。 使用CGDisplayMoveCursorToPoint,我可以在屏幕上移动光标。奇迹般有效。
要为其他应用程序提供 API,我们可以使用 android:exported="true" 导出我们自己的内容提供程序、服务和广播接收器在我们的应用程序中的 AndroidManifest.xml .
我正在构建一个同义词库应用程序,对于这个问题,关键是我正在为特定单词(例如 - “feline”、“tomcat”)添加同义词列表(具有相同含义的单词) "、"puss"是 "cat"的同义词) 我有
我正在创建音频,为它分配源并使用jquery以编程方式将其附加到页面,我还需要向该音频添加一个类,但是我无法使其工作,我尝试了以下操作: var song = new Audio(); song.sr
我想以编程方式使用 RadioButton 的属性 - android:button="@drawable/abc"。 我如何用 Java 编写这个? 最佳答案 试试这个 radioButton.se
什么是 QTP 中的描述性编程? 最佳答案 在不使用对象存储库的情况下创建测试称为描述性编程,因为您将对象描述为脚本的一部分。 例如 Browser("title:=Google").Page("ti
这个问题在这里已经有了答案: Android Activity, how to override manifest's android:configChanges with Java code? (2
我正在尝试将二进制数据存储在动态创建的 JCR 中。我的问题是 JCR API 提供的唯一方法是通过 InputStream : Session session = request.getResour
这个问题在这里已经有了答案: Set EditText Digits Programmatically (6 个回答) 2年前关闭。 我目前正在使用 android:digits="qwertzuio
我正在开发 Windows 窗体应用程序。我有以下问题:在一个表单中有一个面板,在那个面板中我有许多控件(只是一个带有文本框的标签,数量是在运行时确定的)。此面板的大小小于动态添加的所有控件的总和。所
在国际象棋小程序的框架内,我有几套这样的灰度/黑白(不确定): 有什么方法可以通过 Java 代码为 PNG 图片赋予色调?尝试用谷歌搜索此事,但没有找到任何真正符合我正在寻找的东西。 例如,对于下面
我有一个 CompilationUnit,其中包含一个未导入对另一个类的引用的类。Eclipse 轻松解决了此类问题,并建议导入缺少的类(位于父包中)。 如何在不知道其名称或位置的情况下以编程方式导入
我可以完全访问 Android 系统。我拥有所有 super 用户权限,可以从我的任何应用程序中执行所有操作。我只想实现一项功能,其中我需要重置设备而不将用户重定向到 PRIVACY_SETTINGS
Android Q 引入了一项设置,可以在应用程序上强制使用深色模式,而无需担心手动更改颜色:https://developer.android.com/preview/features/darkth
好的,所以我做了一些研究,似乎一致认为您不能以编程方式更新 android:updatePeriodMillis。 看来您必须改用 AlarmManager,这就像使用大锤来敲开坚果一样……奇怪的是
我正在努力在我的表格 View 中实现一些自定义操作。目前我在下面的代码中创建了一个自定义操作。 override func tableView(tableView: UITableView, edi
我有这个委托(delegate),它打算在用户用手指滚动时执行: -(void)scrollViewDidScroll:(UIScrollView *)scrollView 我有一行代码滚动到开头:
如果我们有这段代码: int a; cout > a; 在终端中,输入请求看起来像这样 please enter a value: _ 我如何以编程方式模拟用户在其中的输入。 最佳答案 下面是一个示例
是否可以通过 java 方法以编程方式重新呈现 a4j:outputPanel? 最佳答案 您可以保留民意调查,并在方法中设置一些标志(如果该标志已在民意调查中捕获),因为设置只是渲染面板 关于jav
我是一名优秀的程序员,十分优秀!