当添加视图时,即使宽度是包装内容,它们也会在另一个下面

时间:2015-01-29 20:19:24

标签: android button layout view

我有一个线性布局然后编程我添加一些微调器和按钮等等,但我有xml按钮包装内容(宽度)然后在java上我添加微调器(或其他任何东西)它在下面这个视图即使两个视图都是换行内容:

progBar = new ProgressBar(this);
        pBarToca = new ProgressBar(this);
        pBarToca.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));


        linToca = (LinearLayout) findViewById(R.id.tetoca);
        linToca.addView(pBarToca);

并将其放在xml按钮下

<LinearLayout android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" android:layout_marginTop="6dp"
            android:id="@+id/tetoca">
            <TextView style="@style/StylePartida"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/te_toca_jugar" />
            <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#A7E9A9" android:onClick="callJugar"
                android:text="@string/jugar" />
        </LinearLayout>

编辑!!!!!!

我希望第一行有textview,然后是下一行按钮+ progressbar(例如)

3 个答案:

答案 0 :(得分:0)

在textView中,您正在匹配父

android:layout_width="match_parent"

这将导致textview占用父视图的整个宽度。

android:layout_width="wrap_content"

android:orientation="horizontal"
android:orientation="vertical" will cause the elements to be stacked.

如果您使用的是"horizontal",那么重要的是不要让宽度与父级匹配的子元素。

horizontal orientation with wrapped content on child elements

编辑:

OP更改为问题后:

我使用了textview,两个按钮和listview来了解如何对其进行格式化。有很多方法可以达到同样的效果,这是一个建议 内部线性布局具有水平方向(默认情况下)。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" 
          android:layout_marginTop="6dp"  
          android:orientation="vertical">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="te_toca_jugar"/>

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

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#A7E9A9" 
    android:text="jugar"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#A7E9A9"
    android:text="jugar2"/>
<ListView
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:id="@+id/lv">
</ListView>

</LinearLayout>
</LinearLayout>

New layout

答案 1 :(得分:0)

您已android:orientation=vertical,因此View将从顶部开始并向下展开。

如果您希望它们彼此相邻,请从xml中删除它,因为orientation的默认LinearLayout是水平的。如果您这样做,您显然需要将android:width更改为wrap_content TextView,否则它将占用整个屏幕。

发表评论后,RelativeLayout在这里效果最佳。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
    <TextView 
        style="@style/StylePartida"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/te_toca_jugar"
        android:id="@+id/tvID" />  // give it an id
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:id="@+id/tetoca"
        android:layout_below="@/id=tvID">  // place it below the TV
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#A7E9A9" android:onClick="callJugar"
            android:text="@string/jugar" />
    </LinearLayout>
</RelativeLayout>

请注意评论中的更改。现在,当您将进度条添加到LL时,它应该在Button旁边。您可能需要进行一些更改,但这应该可以为您提供您想要的内容。

答案 2 :(得分:0)

<LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:id="@+id/tetoca">
        <TextView style="@style/StylePartida"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/te_toca_jugar"
            android:text="@string/te_toca_jugar" />
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#A7E9A9" android:onClick="callJugar"

            android:text="@string/jugar" />
    </LinearLayout>