我在Android studio的列表视图中创建了一个表视图(参见下面的代码),由于各种原因,我使用了文本视图和复选框作为单独的元素,而不是仅使用复选框并附加文本。问题是文本位于屏幕/表格的左侧,但复选框基本上居中,因为我希望它位于最右侧。
var netInfo = require('com.clever_apps.tinetworkinfo');
var win = Ti.UI.createWindow({exitOnClose: true});
var testLabel = Ti.UI.createLabel({
height:"80%",
width:"90%",
top:0
});
var refreshButton = Ti.UI.createButton({
title:"Refresh Data",
height:"15%",
bottom:"5%"
});
refreshButton.addEventListener("click", getTelephonyData);
win.add(testLabel);
win.add(refreshButton);
getTelephonyData();
win.open();
function getTelephonyData(){
var imei = netInfo.getIMEI();
var cellid = netInfo.getCellID();
var lac = netInfo.getLac();
var mnc = netInfo.getMNC();
var mmc = netInfo.getMMC();
var outString = "IMEI: "+imei+"\nCell ID: "+cellid+"\nLAC: "+lac+"\nMNC: "+mnc+"\nMMC: "+mmc;
testLabel.text = outString;
}
实际上有更多这些文本视图和复选框,但你明白了。我已经尝试过使用填充和边距,但这并没有真正起作用,因为它可以在某些设备显示器上正常工作,但我必须硬编码它并不理想。我也尝试过引力功能,由于某些原因似乎没有做任何事情。
任何帮助表示赞赏
答案 0 :(得分:0)
您使用TableLayout有特殊原因吗? 如果没有,可以使用垂直LinearLayout中的RelativeLayout轻松实现所需的输出(TextViews左对齐,Checkboxes右对齐)。
您的XML将如下所示(仅包括相关部分,代码的所有其他属性将保持不变):
<ScrollView>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_alignParentLeft="true" />
<CheckBox
android:layout_alignParentRight="true" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
修改强>: 如果您想要将多个复选框彼此相邻放置,您可以通过使其位置相互引用来实现,例如
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_alignParentLeft="true" />
<CheckBox
android:id="@+id/checkbox1"
android:layout_alignParentRight="true" />
<CheckBox
android:id="@+id/checkbox2"
android:layout_toLeftOf="@id/checkbox1" />
<CheckBox
android:id="@+id/checkbox3"
android:layout_toLeftOf="@id/checkbox2" />
</RelativeLayout>
请注意,您必须先定义最右边的复选框,然后最左边的最后一个。 鉴于复选框的宽度是相同的(在大多数情况下它们是相同的),它们将完美对齐。