gpt4 book ai didi

android-TextView setGravity 不工作

转载 作者:行者123 更新时间:2023-11-29 21:07:51 26 4
gpt4 key购买 nike

我有一个问题。我正在尝试创建具有规范尺寸的 TextView,我是在 onMeasure 方法中进行的。我的问题是我想更改文本对齐方式,所以我调用了 setGravity(Gravity.RIGHT) 方法,但它不是工作,文本仍在左侧。

下面是我的代码,希望有人能帮助我:(

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

LinearLayout layout = new LinearLayout(this);
MyLabel label = new MyLabel(this);
label.setText("Hello");
label.setBackgroundColor(Color.RED);
label.setGravity(Gravity.RIGHT);
layout.addView(label);

setContentView(layout);

}

public class MyLabel extends TextView {

public MyLabel(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);

// Desire Size : Mac dinh la Wrap Content
float desireWidth = getMeasuredWidth();
float desireHeight = getMeasuredHeight();

int maxWidth = 0;
int maxHeight = 0;
float width = 0.7f;
float height = 0.3f;

if (maxWidth == 0) {
maxWidth = MeasureSpec.getSize(widthMeasureSpec);
}

if (maxHeight == 0) {
maxHeight = MeasureSpec.getSize(heightMeasureSpec);
}

// Neu abstract model co thong tin ve kich thuoc :
if (width > 0) {

int parentWidth = 0;
if (true) {
parentWidth = maxWidth;
} else {
parentWidth = 480;
}
if (width <= 1) {
// Gia tri duoc tinh toan theo % cua parent
desireWidth = width * parentWidth;
} else {
desireWidth = width < parentWidth ? width : parentWidth;
}
}

// Kich thuoc chieu cao cung tuong tu nhu vay
if (height > 0) {

int parentHeight = 0;
if (true) {
parentHeight = maxHeight;
} else {
parentHeight = 800;
}
if (height <= 1) {
// Gia tri duoc tinh toan theo % cua parent
desireHeight = height * parentHeight;
} else {
desireHeight = height < parentHeight ? height
: parentHeight;
}
}
// Cuoi cung, ta set kich thuoc cho view
this.setMeasuredDimension((int) desireWidth, (int) desireHeight);
}
};

最佳答案

用 Java 制作布局可能很有用,但有时重要的实现细节在您这样做时会被隐藏起来。这是其中一个时代。

当您调用 addView() 时,要添加的 View 会从父 View 获取默认的 LayoutParams 对象。对于 LinearLayout,此默认 LayoutParams 对象的宽度和高度指定为 WRAP_CONTENT。由于您的 TextView 仅与其内容一样大,因此更改其重力没有明显效果。

您需要创建一个 LayoutParams 对象并将其提供给 addView()。您可以将其重力设置为 RIGHT,也可以使用 MATCH_PARENT 作为其宽度。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
linearLayout.addView(textView, params);

请注意,默认情况下,LinearLayout 具有 HORIZONTAL 方向,当它是屏幕布局的根时,它往往不是那么有用。您可能想对其调用 linearLayout.setOrientation(LinearLayout.VERTICAL)

关于android-TextView setGravity 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23936310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com