【问题标题】:LinearLayout imageview + Text (left + right) differents layouts?LinearLayout imageview + Text(左+右)不同的布局?
【发布时间】:2014-06-11 07:47:38
【问题描述】:

LinearLayout int LinearLayout imageview + Icon(左+右)

我尝试向右对齐,但我遇到了很多问题。

左对齐时一切正常,但是当我尝试右对齐时,图像在左侧,因为它在布局内,我不知道如何更改布局。 是用来聊天的。

LayoutParams lp = (LayoutParams) holder.text.getLayoutParams ();
LayoutParams lp2 = (LayoutParams) holder.text2.getLayoutParams ();
LayoutParams lp3 = (LayoutParams) holder.image.getLayoutParams ();

左对齐(工作)

lp.gravity = Gravity.LEFT;
lp2.gravity = Gravity.LEFT;
lp3.gravity = Gravity.LEFT;

右对齐(不工作)

lp.gravity = Gravity.RIGHT;
lp2.gravity = Gravity.RIGHT;
lp3.gravity = Gravity.RIGHT;

不从左侧位置移动:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"  >

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

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" 
         android:id="@+id/chat_layout1">

        <ImageView
            android:id="@+id/image"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:src="@drawable/user" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:id="@+id/chat_layout2">

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_margin="5sp"
            android:background="@drawable/right_message_bg"
            android:text="Medium Text"
            android:textSize="20sp"/>

        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-" />
    </LinearLayout>

</LinearLayout>

以及如何从其他布局更改图像?聊天布局2?

____
|   |  text  (work)
|___| 
____
|   |                    text   (not work right)
|___|

【问题讨论】:

  • 你会画出你想要的布局吗?
  • 尝试定义左右对齐的两个布局,并尝试根据聊天消息隐藏/显示...
  • 我试过了,但没用,因为我有 2 个 id 文本,并且只适用于第一个。在更改位置之前检查并执行它们

标签: android android-layout


【解决方案1】:
  1. 将 chat_layout2 的 xml 宽度布局参数更改为 wrap_content。

    您的图片布局之所以可见,是因为它排在首位。您的文本视图布局尝试尽可能大。此外,图像环绕布局是多余的,因为 ImageView 仍然会有 LinearLayoutParam 参数。

  2. 并将 (chat_layout1 & chat_layout2) 的父级 (parent_chat_layout) 的重力设置为右 - 它会改变其子级的定位方式。并将其方向设置为水平。

Activity with Developer Options>显示布局边界打开:

<LinearLayout ...>

<LinearLayout android:id="@+id/parent_chat_layout"
    ...
    android:orientation="horizontal">

    <ImageView  
        android:id="@+id/image" ... />

    <LinearLayout
        android:id="@+id/chat_layout2"
        android:layout_width="match_parent" //IT SHOULD BE WRAP_CONTENT
        ...>
        <TextView
            android:id="@+id/text"
            .../>
        <TextView
            android:id="@+id/text2"
            ..."/>
    </LinearLayout>
</LinearLayout>

<LinearLayout android:id="@+id/parent_chat_layout2"
    ...
    android:gravity="right"> //THIS SHOULD BE CHANGED, NOT CHILDREN'S GRAVITY

        <ImageView
            android:id="@+id/image1".../>

    <LinearLayout
        android:id="@+id/chat_layout21"
        android:layout_width="wrap_content" //THIS IS WHERE MAGIC HAPPENS
        ...>
        <TextView
            android:id="@+id/text1"
           .../>
        <TextView
            android:id="@+id/text21"
            .../>
    </LinearLayout>
</LinearLayout>
</LinearLayout>

【讨论】:

  • 如何把图片放在文字前面? ="文本[图像]"
  • 在这种情况下,您需要多一种布局。从技术上讲,您可以将 ImageView 链接到变量,而不是将其从 parentLayout 中删除(它位于 0 位置),然后将其添加到 parentLayout(它将位于 1 位置,而 chat_layout 将位于 0 位置),但这是比创建第二个布局要复杂得多。
【解决方案2】:

尝试使用 RelativeLayout 而不是 LinearLayout。相对布局更容易使用...

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 该链接回答了问题,提供了相关的阅读材料和工作示例,它来自谷歌的 Android 开发者网站,所以我怀疑它会很快改变。话虽如此,在您取消投票后,我可以毫无问题地编辑我的答案并包含一个示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多