自定义布局中,TextView设定居中无效果

jiemo1123 2015-05-16 10:10:04
package com.zyt.aa;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.TextView;

public class LayoutTest extends ViewGroup {

public LayoutTest(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

public LayoutTest(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public LayoutTest(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measureWidth = measureSize(widthMeasureSpec);
int measureHeight = measureSize(heightMeasureSpec);
measureChildren(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(measureWidth, measureHeight);
}

private int measureSize(int pWidthOrHeightMeasureSpec) {
int mode = MeasureSpec.getMode(pWidthOrHeightMeasureSpec);

if((MeasureSpec.EXACTLY == mode) || (MeasureSpec.AT_MOST == mode)){
return MeasureSpec.getSize(pWidthOrHeightMeasureSpec);
}

return 0;
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
for (int i = 0; i < 2; i++) {
final TextView child = (TextView) getChildAt(i);
if (child.getVisibility() == GONE) {
continue;
}

switch(child.getId()){
case R.id.init_1:
child.layout(0, 0, 100, 100);
break;

case R.id.init_2:
child.layout(100, 100, 200, 200);
break;
}
}
}
}

自定义布局:LayoutTest.java
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<com.zyt.aa.LayoutTest
android:id="@+id/test_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal">

<TextView
android:id="@+id/init_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="abc"
android:gravity="center"
android:textColor="#FFFFFFFF"
android:background="@drawable/background_circle" />

<TextView
android:id="@+id/init_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="def"
android:gravity="center"
android:textColor="#FFFFFFFF"
android:background="@drawable/background_circle" />
</com.zyt.aa.LayoutTest>

</LinearLayout>

布局文件:test.xml
package com.zyt.aa;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

activity文件:MainActivity.java

在LayoutTest中定义了TextView,而且设定居中显示,但是效果确实不居中(效果如下图),是因为LayoutTest重新画了控件吗?如果要居中,改如何处理?
...全文
421 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
七步777 2015-05-25
  • 打赏
  • 举报
回复
android:layout_width="wrap_content"
            android:layout_height="wrap_content"
内容包裹,TextView的大小和内容小大一致。
寒烟凝绿 2015-05-25
  • 打赏
  • 举报
回复
因为你重写的方法里设置了layout 所以你要在重写方法里重新去动态设置Gravity
zjlloveo0 2015-05-19
  • 打赏
  • 举报
回复
还有 既然是布局问题 就不用发Activity的代码了
zjlloveo0 2015-05-19
  • 打赏
  • 举报
回复
引用 2 楼 jiemo1123 的回复:
引用 1 楼 tcmakebest 的回复:
如果控件与其中的内容一样大, 那里面的内容居左,居中,居右完全是一样的啊. 过个独木桥能分得出走的是左边还是右边吗
没明白什么意思
说的对 ,
爱老婆的狼 2015-05-19
  • 打赏
  • 举报
回复
你可以看看textView的实际有效范围是不是比圆形范围大
爱老婆的狼 2015-05-19
  • 打赏
  • 举报
回复
你已经在自定义view中的onlayout方法把子view的位置写死了,你再设置居中显示肯定就没用了
Hare_ 2015-05-18
  • 打赏
  • 举报
回复
要让TextView居中,可以在LayoutTest属性中使用gravity属性,在TextView中需要设置layout_gravity来设置,要清楚gravity和layout_gravity的区别, gravity是设置当前控件的子控件的位置 layout_gravity是设置当前控件在父View中的位置
jiemo1123 2015-05-18
  • 打赏
  • 举报
回复
引用 1 楼 tcmakebest 的回复:
如果控件与其中的内容一样大, 那里面的内容居左,居中,居右完全是一样的啊. 过个独木桥能分得出走的是左边还是右边吗
没明白什么意思
tcmakebest 2015-05-16
  • 打赏
  • 举报
回复
如果控件与其中的内容一样大, 那里面的内容居左,居中,居右完全是一样的啊. 过个独木桥能分得出走的是左边还是右边吗

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧