android - params.setMargins 不能以编程方式工作
问题描述
我在 xml 中设置了 layout_marginStart 和 layout_marginTop 并且没问题,但是当我尝试以编程方式设置边距时它不起作用。我试图找到如何解决,但找不到解决方案。
什么我不正确?
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="3"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/app_bar_resourses">
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/MyGridLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top|center"
android:background="@color/borderHigh"
android:columnCount="2"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/firstLinear1"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginStart="@dimen/resourceBorder"
android:layout_marginTop="@dimen/resourceBorder"
android:background="@drawable/resource_panel"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/firstLinear2"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginStart="@dimen/resourceBorder"
android:layout_marginTop="@dimen/resourceBorder"
android:background="@drawable/resource_panel"
android:orientation="vertical" />
</GridLayout>
</ScrollView>
上面的 XML 有效
我尝试通过代码做到这一点,它必须工作,但我无法解决这个问题
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
int dp9 = dpToPx(9);
GridLayout MyGridLayout = findViewById(R.id.MyGridLayout);
final int N = 10; // total number of textviews to add
for (int i = 0; i < N; i++) {
LinearLayout testlayout = new LinearLayout(this);
//LinearLayout.LayoutParams tst = new LinearLayout.LayoutParams(0,0);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
params.height = (width/2)-dp9;
params.width = (width/2)-dp9;
params.setMargins(6, 6, 0, 0);
testlayout.setLayoutParams(params);
testlayout.setOrientation(LinearLayout.VERTICAL);
testlayout.setBackgroundResource(R.drawable.resource_panel);
TextView title = new TextView(this);
title.setText("TextView "+i);
title.setTextColor(getResources().getColor(R.color.colorPrimary2));
title.setAllCaps(true);
title.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(title, 10, 24, 1, TypedValue.COMPLEX_UNIT_SP);
testlayout.addView(title);
TextView text = new TextView(this);
text.setText("Text "+i);
testlayout.addView(text);
TextView date = new TextView(this);
date.setText("date "+i);
testlayout.addView(date);
}
解决方案
推荐阅读
- javascript - 使用 Javascript 在 Canvas 中的弧上绘制文本的问题
- javascript - 如何修复“加载资源失败:服务器响应状态为 400 ()”API 获取错误
- r - 消除 R 中除 NA 值外的所有重复项
- mongodb - mongodb:两个字段之间的差异之和
- excel - 将上个月的最后一天添加到 Excel 中的列
- javascript - 在几个特定的时间后运行相同的功能
- akka - 如何立即通知 Akka WebSocket 服务器 WebSocket 客户端已停止
- c# - 将机器人部署到 Azure 后,在网络聊天键入消息中进行测试返回“未找到”HTTP 状态代码
- c++ - 如何从 C++ 中实例化对象的函数指针调用函数?
- apache-kafka - 在 ftp 上对文件进行流处理