0

我正在尝试在屏幕顶部创建一行四个 TextView。该行应由右侧的一个 TextView、左侧的一个 TextView 以及与右侧 TextView 相邻的两个 TextView 组成。对于前两个 TextView,以下代码可以正常工作:

<TextView
android:id="@+id/textViewRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:paddingLeft="150dip"
android:text="Right TextView"
android:layout_alignParentTop="true"
/>
<TextView 
android:id="@+id/textViewLeft"
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Left TextView"
android:layout_alignBaseline="@id/textViewRight"
android:paddingRight="150dip"
/>

但是,当我尝试添加更多 TextViews 时,如下所示:

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/textViewRight"
android:layout_alignBaseline="@id/textViewRight"
android:text="TextView L"
android:inputType="number|numberSigned"

/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/textViewRight"
android:layout_alignBaseline="@id/textViewRight"
android:text="TextView R"
android:inputType="number"
    />

布局预览屏幕上没有任何变化,并且两个 EditText 不可见。

如何使最后两个 EditText 出现?我应该使用边距而不是填充吗?任何帮助是极大的赞赏!

这是完整的布局文档:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >




<TextView
android:id="@+id/textViewRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:paddingLeft="150dip"
android:text="Right TextView"
android:layout_alignParentTop="true"
/>
<TextView 
android:id="@+id/textViewLeft"
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Left TextView"
android:layout_alignBaseline="@id/textViewRight"
android:paddingRight="150dip"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/textViewRight"
android:layout_alignBaseline="@id/textViewRight"
android:text="TextView L"
android:inputType="number|numberSigned"

/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/textViewRight"
android:layout_alignBaseline="@id/textViewRight"
android:text="TextView R"
android:inputType="number"
    />

</RelativeLayout>
4

3 回答 3

1

我不会说英语,但我可以帮助你......使用这个功能......在 main.java 中自动调整大小

  public class MAIN extends Activity {

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


     //               (POSX,POSY,WIDTH,HEIGHT, 0 TO 1....
     AutoSizeAndSetXY(TX1, 0.1,  0.1 , 0.3 , 0.3);
     AutoSizeAndSetXY(TX2, 0.5,  0.1, 0.3 , 0.3 );
     AutoSizeAndSetXY(TX3, 0.1,  0.5 , 0.3 , 0.3);
     AutoSizeAndSetXY(TX4, 0.5,  0.5, 0.3 , 0.3 );
}



      public void AutoSizeAndSetXY(View v,double posX,double posY,double width,double height){
   Display display = getWindowManager().getDefaultDisplay();

   int widthP = display.getWidth();
   int heightP = display.getHeight();
   RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
   lp.setMargins(((int)Math.round(posX*widthP)),((int)Math.round(posY*heightP)), 1, 1);
   v.setLayoutParams(lp);
   v.getLayoutParams().height=(int)(Math.round(height*heightP));
   v.getLayoutParams().width=(int)(Math.round(width*widthP));

  }
}
于 2013-08-27T23:57:19.173 回答
0

我认为没有足够的空间将所有这些人添加到一个原始文件中,特别是对于手机,而不是平板电脑。

但如果你想这样做,最好用水平滚动视图围绕你的相对布局,如下面的布局。

也不要使用填充或边距将您的视图推到所需的位置,这确实被认为是一个糟糕的布局设计。

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textViewLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textViewRight"
        android:layout_alignParentLeft="true"
        android:text="Left TextView" />

    <EditText
        android:id="@+id/editTextLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textViewRight"
        android:layout_toRightOf="@id/textViewLeft"
        android:inputType="number|numberSigned"
        android:text="TextView L" />

    <TextView
        android:id="@+id/textViewRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/editTextLeft"
        android:text="Right TextView" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@id/textViewRight"
        android:layout_toRightOf="@id/textViewRight"
        android:inputType="number"
        android:text="TextView R" />
</RelativeLayout>

于 2013-08-27T23:51:57.417 回答
0

在这种情况下,我宁愿使用 LinearLayout 而不是 RelativeLayout。并且对于使用 layout:weight="1" 的 editTexts 和 textViews 具有相同的宽度会很好。(您可以删除某些视图的权重并将其宽度设置为 wrap_content 以满足您的需要)

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" 
android:orientation="horizantal">

<TextView
    android:id="@+id/textViewLeft"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    layout_weight="1"
    android:text="Left TextView"/>

<EditText
    android:id="@+id/editTextLeft"
    android:layout_width="0dp"
    android:layout_height="wrap_content" 
    layout_weight="1"
    android:inputType="number|numberSigned"
    android:text="Left EditText" />



<EditText
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    layout_weight="1"
    android:inputType="number"
    android:text="Right EditText"/>

<TextView
    android:id="@+id/textViewRight"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    layout_weight="1"
    android:text="Right TextView" />

于 2013-08-28T00:10:42.593 回答