- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题。我正在尝试创建具有规范尺寸的 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/
我对 Android 开发非常陌生,但了解一点 Java。我不知道将 Toast.setGravity(Gravity.TOP,0,0) 放在代码中的何处。 代码如下: package ca.igni
好吧,我正在使用 andengine 和 box2d 扩展你看,我的物体从地面(红色矩形)飞到相机的屋顶(黄色),我不明白这是怎么回事 这是我的代码的一部分, @Override public Eng
我有一个问题。我正在尝试创建具有规范尺寸的 TextView,我是在 onMeasure 方法中进行的。我的问题是我想更改文本对齐方式,所以我调用了 setGravity(Gravity.RIGHT)
我想使用 TextView.setGravity() 方法将按钮的重力值从默认的 center 设置为 right ,但是当我调用它时什么都没发生。在使用 getGravity() 方法的 LogCa
This question和我的很相似,但是没有建设性的回答。 我正在尝试对列表中的标题 View 进行简单切换。我希望第一部分的头部在左侧,第二部分的头部在右侧。这个head view的布局是一个相
我有一个 android 小部件,它在 FrameLayout 中显示一个 TextView。 TextView 填充整个父布局。我想做的是,它能够在运行时更改文本在 TextView 中的显示位置。
刚刚更新到支持 Android 4.4 的新 Android SDK Rev 22.3。之后我看到 AdView 不再有 setGravity 方法。 我需要这个,因为我正在制作一个 Unity3D
我有一个带有 TextView 的应用小部件。 我正在尝试通过调用 来更改文本对齐方式 views.setInt(R.id.widgetText, "setGravity", Gravity.C
我看不懂android:gravity的用法和 setGravity()的 GridView . android:gravity Specifies the gravity within each c
大家好,我有 2 个这样的 Toast 版本 版本 1: Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_LONG).setGr
我有一种情况,我想以编程方式更改我的 TextView 的重力(Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM 到 Gravity.START|Gravity.BOT
在 Android API 19 中添加了允许比重的弹出菜单的构造函数。 public PopupMenu (Context context, View anchor, int gravity) 我如
这里是第一个问题。 我正在尝试使用 Xamarin 开发一个应用程序,并使用 C# 以 android 为目标。当我实例化 TextView 的实例并尝试通过代码操作它时,我的问题就开始了: text
我正在使用一个简单的 GridLayout,我正在向其中动态添加按钮。 我正在使用此 Java 代码来填充我的网格,除了 set Gravity 选项没有任何作用外,一切正常。我已经尝试过 - 将
我正在使用 EditText,并且知道 setTextAlignment 直到 API 17 才实现,但不知道如何使用setTextAlignment 比 setGravity 更容易或更好。我应该将
我正在为一个项目使用 php Imagick 类 我尝试合成一张改变图像重力的图像 我的意思是,我想将目标图像合成到中间或者顶部中心 我用 .... $imageOrg->setGravity(ima
我遇到了一个问题,但我不知道是什么原因造成的。我有一个像这样的非常简单的布局: 包含在另一个布局中。如果我更改 xml 中的重力,我会在 Layout-Editor 和我的手机上看到相同的结果
我有一个带有四个按钮的自定义 View 。我用 Java 创建了 View ,因为我想为按钮设置动画。我想将按钮上的文本居中,但我只能水平(左右)而不是垂直。文本粘在顶部。 这是我可以使用的最基本的代
我正在使用 FrameLayout 在屏幕上显示(按需)一些文本。我希望文本位于某个位置,所以我认为 setGravity() 可以完成这项工作......但是不,它似乎对文本的位置没有任何影响(而其
我是一名优秀的程序员,十分优秀!