2012-07-15 106 views
1

我有一个视图,其中有两个LinearLayouts - 一个带有Text,EditText和一个按钮,另一个带有Text和EditText。我想获得第二个EditText的宽度(在第二行)以匹配第一行的宽度。我已经尝试使它成为一个TableLayout而不是仅仅使用LinearLayouts,现在我试图以编程方式设置宽度。我得到第一个EditText的宽度,并尝试第二个EditText的setWidth,但它不会更改大小。Android EditText以编程方式调整大小

* JAVA调整大小尝试*

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
// TODO Auto-generated method stub 
super.onWindowFocusChanged(hasFocus); 

getWidthBox = (EditText) findViewById(R.id.editText10); 
setWidthBox = (EditText) findViewById(R.id.EditText01); 

Toast.makeText(this, "Meaured Width: " + Integer.toString(getWidthBox.getMeasuredWidth()), Toast.LENGTH_SHORT).show(); 
Toast.makeText(this, "Get Width: " + Integer.toString(getWidthBox.getWidth()), Toast.LENGTH_SHORT).show(); 

//Neither of these setWidth Lines Work Correctly 
setWidthBox.getLayoutParams().width=getWidthBox.getWidth(); 
setWidthBox.setWidth(getWidthBox.getWidth()); 
} 

* XML布局*

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.15" 
     android:paddingLeft="5dp" > 


     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="110dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="left|center_vertical" 
      android:text="Points Allowed: " 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textSize="15sp" /> 

     <EditText 
      android:id="@+id/editText10" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:ems="10" 
      android:inputType="number" > 
     </EditText> 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:src="@drawable/editpencil" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.15" 
     android:paddingLeft="5dp" > 

     <TextView 
      android:id="@+id/TextView01" 
      android:layout_width="110dp" 
      android:layout_height="wrap_content" 
      android:text="Points Used: " 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textSize="15sp" /> 

     <EditText 
      android:id="@+id/EditText01" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:ems="10" 
      android:inputType="number" /> 
    </LinearLayout> 

* FROM SCREENSHOT仿真器* Screenshot from Emulator

回答

1

我解决它在一个有点不同的方式这对我最有意义。我所做的是通过getWidth获取铅笔按钮的宽度,然后将LinearLayout的右侧填充(每行都是它自己的LinearLayout)设置为该按钮的宽度。这似乎很好地工作,并允许按钮更改大小(基于屏幕大小和DP)和填充作出相应的反应。

imageButtonWidth = (ImageButton) findViewById(R.id.imageButtonEdit); 
linearLayoutPointsUsed= (LinearLayout) findViewById(R.id.linearPointsUsed); 

widthOfEditButton = imageButtonWidth.getWidth(); 

linearLayoutPointsUsed.setPadding(5, 0, widthOfEditButton, 0); 
0

你probabl Ÿ要做到这一点

getWidthBox.getLayoutParams().width=getWidthBox.getWidth(); 
setWidthBox.setWidth(getWidthBox.getWidth()); 
+0

第二个EditText仍然会进入屏幕的边缘。 我附上了第一篇文章的截图。 – mattdonders 2012-07-15 14:50:18

0

我只想用相对布局和alignRight第二的TextView到第一

试试这个:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/TV01" 
     android:layout_width="wrap_content" 
     android:layout_height="40dp" 
     android:layout_marginTop="8dp" 
     android:text="Test Text1: " 
     android:textSize="18dp" /> 

    <EditText 
     android:id="@+id/ET01" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:layout_toLeftOf="@+id/Btn" 
     android:layout_toRightOf="@+id/TV01" 
     android:text="test text" /> 

    <Button 
     android:id="@+id/Btn" 
     android:layout_width="wrap_content" 
     android:layout_height="40dp" 
     android:layout_alignParentRight="true" 
     android:text="myBtn" /> 

    <TextView 
     android:id="@+id/TV02" 
     android:layout_width="wrap_content" 
     android:layout_height="40dp" 
     android:layout_below="@+id/TV01" 
     android:layout_marginTop="8dp" 
     android:text="Text2: " 
     android:textSize="18dp" /> 

    <EditText 
     android:id="@+id/ET02" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:layout_alignLeft="@+id/ET01" 
     android:layout_alignRight="@+id/ET01" 
     android:layout_below="@+id/TV01" 
     android:text="test text" /> 

</RelativeLayout> 
+0

你能提供一些代码来帮助我吗?我尝试将整个LinearLayout放入一个RelativeLayout中,然后将alignRight代码添加到下面 - 不知道为什么我的代码不会出现在下面。 ''' – mattdonders 2012-07-15 15:14:07

相关问题