android线性布局,如何居中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android线性布局,如何居中?相关的知识,希望对你有一定的参考价值。
我刚学的,下面是垂直线性布局。
<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:text="@string/textview2" />
为什么我的第二个btn不能够垂直且水平居中,为什么这些属性不能够见名知义,这样设置哪里错了?出来的效果只是显示水平居中而以.
垂直居中的效果我能做得出来,也是误打误撞做出来的,只是不知道其它方式为什么实现不了?
这些标签,是不是可以继承自动继承上一个标签的属性?
很多属性看帮助文档设置的都没有显示出效果?
这些属性为什么设置这么不符合我们的思考逻辑?
好痛苦啊。
标签不能继承。
多思考为什么不能起作用,是符合逻辑的 参考技术A 给你个清晰的回答。
首先,标签有两种,一个是布局(各种Layout),一个是控件(Button,TextView之类)。
上下左右中的位置参数,有: android:gravity ,和 android:layout_gravity。
android:gravity ,是指布局容器,对于自己内部控件的布局方向,在Layout标签描述,作用于Layout内的各个控件。(对内有效)
android:Layout_gravity,是控件自己,在布局容器的布局方向,在控件标签描述,只对自己在布局容器位置有效。(对外有效)
继承什么的…… 我还从来没考虑过~ 参考技术B 给你个清晰的回答。
首先,标签有两种,一个是布局(各种Layout),一个是控件(Button,TextView之类)。
上下左右中的位置参数,有: android:gravity ,和 android:layout_gravity。
android:gravity ,是指布局容器,对于自己内部控件的布局方向,在Layout标签描述,作用于Layout内的各个控件。(对内有效)
android:Layout_gravity,是控件自己,在布局容器的布局方向,在控件标签描述,只对自己在布局容器位置有效。(对外有效)
继承什么的…… 我还从来没考虑过~本回答被提问者采纳 参考技术C 将两个button的布局放到一个linearlayout或者是framelayout里有别的属性的可以看看,很简单的 参考技术D android:gravity ,和 android:layout_gravity
你在LinearLayout中设置下gravity
在其线性布局垂直父Android中将以编程方式创建的单选按钮居中
我正在以编程方式创建一个线性布局,其中orientation = vertical。在该线性布局中,我还以编程方式创建2个或3个对象:
1图像视图
2文本视图(如果需要,我创建此对象)
3单选按钮
问题是如何将单选按钮置于其父级中心?
编辑:我的代码在Xamarin.Android C#中,但我认为很容易将其转换为Java Android
LinearLayout mainLinearLayout = new LinearLayout(this)
{
Orientation = Orientation.Vertical
};
LinearLayout sub1LinearLayout = new LinearLayout(this)
{
//Set orientation = horizontal
Orientation = Orientation.Horizontal
};
//Add the sub1LinearLayout to the mainLinearLayout
mainLinearLayout.AddView(sub1LinearLayout);
for (int j = 0; j < count; j++)
{
LinearLayout sub2LinearLayout = new LinearLayout(this)
{
Orientation = Orientation.Vertical
};
LinearLayout.LayoutParams layoutParams =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent,
ViewGroup.LayoutParams.WrapContent);
RadioButton Box = new RadioButton(this){
//Set gravity = center
Gravity = GravityFlags.Center
};
switch (SomeMode)
{
//Show radio button + image
case Mode.ShowBoxAndImage:
{
ImageView image = new ImageView(this);
Bitmap imageBitmap = BitmapFactory.DecodeFile(path);
image.SetImageBitmap(imageBitmap);
sub2LinearLayout.AddView(image);
layoutParams.SetMargins(padding, 0, 2 * padding, 0);
break;
}
//Show radio button + its text + image
case Mode.ShowBoxAndImageAndText:
{
ImageView image = new ImageView(this);
Bitmap imageBitmap = BitmapFactory.DecodeFile(path);
image.SetImageBitmap(imageBitmap);
sub2LinearLayout.AddView(image);
TextView Name = new TextView(this)
{
Text = name,
TextSize = nameTextSize,
//Set gravity = center
Gravity = GravityFlags.Center
};
Name.SetTextColor(new Color(ContextCompat.GetColor(this, Resource.Color.colorBlack)));
sub2LinearLayout.AddView(Name);
layoutParams.SetMargins(padding, 0, 2 * padding, 0);
break;
}
}
}
sub2LinearLayout.AddView(Box);
sub2LinearLayout.LayoutParameters = layoutParams;
sub1LinearLayout.AddView(sub2LinearLayout);
//Set sub2LinearLayout gravity = bottom
sub2LinearLayout.SetGravity(GravityFlags.Bottom);
试试这个:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.weight = 1.0f;
params.gravity = Gravity.CENTER;
yourview.setLayoutParams(params);
尝试以下代码: -
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayout.setLayoutParams(params);
linearLayout.setPadding(15, 15, 15, 15);
setContentView(linearLayout);
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.english);
TextView textView = new TextView(this);
textView.setGravity(Gravity.CENTER);
textView.setText("1");
RadioButton button = new RadioButton(this);
button.setGravity(Gravity.CENTER);
button.setChecked(true);
linearLayout.addView(imageView);
linearLayout.addView(textView);
linearLayout.addView(button);
}
我通过为每个视图创建LayoutParams来修复它,并将其视图添加到父线性布局。
LinearLayout.LayoutParams center = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)
{
Gravity = GravityFlags.Center
};
试试这个
在所有子视图中使用布局重力
android:layout_gravity="center"
使用
yourLinearLayout.setGravity(Gravity.CENTER);
检查这是否有效。
以上是关于android线性布局,如何居中?的主要内容,如果未能解决你的问题,请参考以下文章
在其线性布局垂直父Android中将以编程方式创建的单选按钮居中
以这种方式居中布局的好解决方案是啥?(android xml)