在Android中使用线性布局时的布局问题

时间:2016-02-12 09:24:06

标签: android android-layout

我想在结尾处有两个文字和一个箭头标记。所以我尝试了以下内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal"
        android:layout_weight="0.25"
        android:gravity="center_vertical">

        <TextView
            android:id="@+id/labeltext"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="Specification"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="right"
            android:src="@drawable/ic_next"/>

    </LinearLayout>

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

    <TextView
            android:id="@+id/labelselected"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Specification down"/>

    </LinearLayout>
</LinearLayout> 

但我还是得到了:

{{3}}

我想如果我们把android:gravity =“right”整个图像向右移动但这没有移动?

有人可以帮我解决这个问题吗?

8 个答案:

答案 0 :(得分:3)

注意:

  1. 首先将horizontal置于LinearLayout方向

  2. 然后在其中放入另外2 layout_weight并将<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="4" > <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_vertical" android:layout_weight="3"> <TextView android:id="@+id/labeltext" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="Specification" /> <TextView android:id="@+id/labelselected" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="Specification down"/> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:orientation="horizontal" android:layout_weight="1" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="right" android:src="@android:drawable/sym_def_app_icon"/> </LinearLayout> </LinearLayout> 设为您的愿望

  3. 然后在其中添加您想要的任何内容。

  4. 那就是....

    这是更正后的代码

    procedure TForm1.Button1Click(Sender: TObject);
    var 
     plainms, cipherms: TMemoryStream;
     tempstr: string;
    
    begin
      plainms := TMemoryStream.Create;
      cipherms := TMemoryStream.Create;
      try
        cipherms.LoadFromFile('rwcx.ini');
        Codec1.Password := '122rkdkdk';  
        try
         Codec1.DecryptStream(plainms, cipherms);
        except on E: Exception do
          showmessage(e.Message);
        end;
        plainms.Position := 0;
        SetLength(tempstr, plainms.Size * 2);
        BinToHex(plainms.Memory, PChar(tempstr), plainms.Size);
        showmessage(tempstr);
      finally
        plainms.Free;
        cipherms.Free;
      end;
    end;
    

    enter image description here

答案 1 :(得分:2)

你可以这样做。

截图参考:

enter image description here

我是通过将 match_parent 宽度设置为TextView并指定 drawableRight 属性来完成的。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/labeltext"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawableRight="@drawable/ic_next"
            android:gravity="center_vertical"
            android:text="Specification" />


    </LinearLayout>

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

        <TextView
            android:id="@+id/labelselected"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Specification down" />

    </LinearLayout>
</LinearLayout> 

希望这会对你有所帮助。

答案 2 :(得分:1)

您可以将图标设置为ImageView并将其宽度设置为TextView

,而不是使用match_parent
<TextView
...
android:drawableRight="@drawable/your_icon"/>

我认为您的IDE会建议您删除LinearLayoutTextViewImageView并使用我的解决方案,因为使用一个小部件而不是三个小部件总是更好;)

答案 3 :(得分:1)

更改布局并尝试。我只是暗示。将文本和图像放在与分布式layout_weight相同的行中。您可以根据需要进行调整

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_vertical">

        <TextView
            android:id="@+id/labeltext"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:text="Specification"/>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:src="@drawable/ic_next"/>

    </LinearLayout>

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

    <TextView
            android:id="@+id/labelselected"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Specification down"/>

    </LinearLayout>
</LinearLayout> 

答案 4 :(得分:1)

将此替换为您的Upper Layout。你需要对imageView使用layout_gravity =“right”。

  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_vertical">

        <TextView
            android:id="@+id/labeltext"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="left|center"
            android:text="Specification"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="right"
            android:layout_gravity="right"
            android:src="@drawable/ic_next"/>

    </LinearLayout>

答案 5 :(得分:1)

使用此功能将对您有用。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

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

        <TextView
            android:id="@+id/labeltext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Specification" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:src="@drawable/ic_next" />

    </RelativeLayout>

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

        <TextView
            android:id="@+id/labelselected"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Specification down" />

    </LinearLayout>
</LinearLayout> 

答案 6 :(得分:0)

使用FrameLayout代替LinearLayout,例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:orientation="vertical"
          android:layout_height="wrap_content">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.25"
    android:gravity="center_vertical">

    <TextView
        android:id="@+id/labeltext"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Specification"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="right"
        android:src="@drawable/ic_next"
        android:layout_gravity="right|center_vertical"/>

</FrameLayout>

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

    <TextView
        android:id="@+id/labelselected"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Specification down"/>

</LinearLayout>

答案 7 :(得分:0)

只需将lateltext textView的权重添加为1

即可
  <TextView
        android:id="@+id/labeltext"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="left|center_vertical"
        android:text="Specification"
        android:layout_weight="1"/>