为什么此textView会扩展到其父边框之外的左侧?

时间:2016-02-26 15:02:22

标签: android android-layout android-linearlayout

我有一个TextView和一个ImageView,它们之间有一个空格。我希望ImageView位于TextView的右侧,而TextView则以dinamically的方式更改其大小。我设法做到了,但如果文本太长,textView会扩展到其父边框之外的左侧。为什么会这样?我该怎么做才能解决它?

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

    <TextView
        android:id="@+id/received"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:padding="5dip"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:background="@drawable/received_style"
        android:text="dsssssajhhhhhhhhhhhhhhhhhhhoooooooooohsssssssssdhsfsd"
        />

    <Space
        android:layout_width="5dp"
        android:layout_height="0dp"
        />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:src="@drawable/edit" />
</LinearLayout>

3 个答案:

答案 0 :(得分:0)

LinearLayout给每个孩子至少提供他们要求的空间。

您可以改为使用RelativeLayout,将父级右侧的ImageViewTextView的{​​{1}}对齐。

答案 1 :(得分:0)

你可以试试这样的。

<RelativeLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:id="@+id/received"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:padding="5dip"
    android:layout_toLeftOf="@+id/space"
        android:text="dsssssajhhhhhhhhhhhhhhhhhhhoooooooooohsssssssssdhsfsd"
        />

    <Space
        android:id="@+id/space"
        android:layout_width="5dp"
        android:layout_height="0dp"
        android:layout_toLeftOf="@+id/imageView"
        />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="30dp"
        android:layout_alignParentRight="true"
        android:layout_height="30dp"
        android:src="@drawable/edit" />
</RelativeLayout>

希望能帮到你!

答案 2 :(得分:0)

为TextView添加重量。

<body>
  <script>
    // declare variable `sizepic`
    var sizepic;

    function resizeimg() {
      if (window.innerWidth > 1200) {
        sizepic = '1200';
        alert(sizepic);
      } else if (window.innerWidth < 1200 && window.innerWidth > 900) {
        sizepic = '990';
      } else if (window.innerWidth < 990 && window.innerWidth > 768) {
        sizepic = '768';
      } else if (window.innerWidth < 768 && window.innerWidth > 590) {
        sizepic = '590';
      } else if (window.innerWidth < 590) {
        sizepic = 'petit';
      }
      console.log("resizeimg called")
    };
    // call `resizeimg` here
    resizeimg();

    function newsize(picture_src) {          
      picture_src.src ="http://lorempixel.com/" + sizepic + "/" + sizepic;
      console.log("newsize called", picture_src, event);
      // remove `onload` event from `picture_src`
      picture_src.onload = null;
      }
  </script>
  <img onload="newsize(this)" src="http://lorempixel.com/1/1/" />
</body>