80,349
社区成员
发帖
与我相关
我的任务
分享
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;
}
}
}
}
<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>
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;
}
}
android:layout_width="wrap_content"
android:layout_height="wrap_content"
内容包裹,TextView的大小和内容小大一致。如果控件与其中的内容一样大, 那里面的内容居左,居中,居右完全是一样的啊. 过个独木桥能分得出走的是左边还是右边吗