Android显示一半TextView和一半ImageView如果为true,则只显示TextView

时间:2017-08-02 10:42:02

标签: android android-layout show-hide

我正在尝试在屏幕左侧的TextView中显示文本,并在“true”时在右侧显示ImageView内的图像:

<RelativeLayout
    android:id="@+id/displayMessageCenter"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/displayMessageTop"
    android:layout_centerHorizontal="true"
    android:background="@android:color/white">
    <TextView
        android:id="@+id/textMessageText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:textColor="#000000"
        android:layout_weight="0.5"
        android:layout_alignBottom="@+id/dividerId" />
    <ImageView
        android:id="@+id/messagePicture"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignBottom="@+id/dividerId"
        android:layout_weight="0.5"
        android:gravity="right"/>
    <View
        android:id="@+id/dividerId"
        android:layout_width="400dp"
        android:layout_height="1dp"
        android:background="#000"
        android:layout_above="@id/leftTextGenericDialog"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"/>
    <TextView
        android:id="@+id/leftTextGenericDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:textColor="#FF72CCCC"
        android:text="SEND RESPONSE"
        android:textSize="40dp"
        android:drawableLeft="@drawable/sendicon"
        android:layout_above="@+id/closeButton"
        android:onClick="sendMessage"/>

    <ImageButton
        android:id="@+id/closeButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="5sp"
        android:layout_gravity="center"
        android:background="@drawable/button_close_animation"
        android:onClick="closeActivity"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"/>

</RelativeLayout>

如果“false”隐藏图像并仅显示TextView,文本位于中心。隐藏将类似于:

if(true) imageView.setVisibility(View.GONE);
else imageView.setVisibility(View.VISIBLE);

但我不知道如何将ImageView和TextView对齐,以便在需要时更容易隐藏/显示ImageView。

我是Android开发的新手,所以请保持温和:)

2 个答案:

答案 0 :(得分:0)

在这些情况下使用相对布局时,可以对TextView使用alignParentLeft = true,对ImageView使用alignParentRight = true,但是如果希望ImageView在可见或不可见时调整TextView。使用像

这样的东西
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    >

  <TextView
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:text="text"
      android:layout_weight="0.5"
      android:gravity="center_horizontal"
      />

  <ImageView
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="0.5"
      android:visibility="gone"

      />

</LinearLayout>

答案 1 :(得分:0)

对于 true 条件,您只需设置

即可
android:alignParentLeft="true"

android:alignParentRight="true"

与TextView和ImageView相对应。


对于 false 条件,您可以以编程方式将规则设置为TextView。只需使用 findViewById 获取TextView并设置如下规则:

TextView tv = (TextView) findViewById(R.id.textMessageText);
RelativeLayout.LayoutParams layoutParams =
                (RelativeLayout.LayoutParams)tv.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
tv.setLayoutParams(layoutParams);