如何确保Relativelayout中两个视图之间的最小空间

时间:2016-12-26 10:08:03

标签: android android-layout

我在RelativeLayout中有两个TextView。一个在左边,另一个在右边。它们都显示可能变得很长的字符串。我想在两个TextViews之间创建一个10dp的最小空间,如果没有足够的空间,则让右边的空间为椭圆形。

我有以下布局定义,但不起作用。正确的TextView可能会覆盖第一个,如果它非常孤立。

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="24" />
                    <RowDefinition />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="30" />
                </Grid.ColumnDefinitions>

                <TextBlock Text="Employee" />
                <Button Grid.Column="1" />

                <ItemsControl ItemsSource="{Binding Days[0].Employee}" Grid.Row="1" Grid.ColumnSpan="2">
                     <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Horizontal" />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Name}" />
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

我能做的唯一方法是将最大长度设置为正确的长度。但这不是我想要的,因为如果左边的那个很短,我希望正确的一个比maxWidth长。

当我添加&#34; toRightOf&#34;这项工作但textView宽度对于显示在其中的短字符串来说太长了。这是不可接受的

3 个答案:

答案 0 :(得分:1)

在right_one textview

中添加Add android:layout_toRightOf="@+id/left_one

从right_one textview

中删除android:layout_alignParentRight="true"

在right_one textview

中将android:layout_marginRight="10dp"替换为android:layout_marginLeft="10dp"

对于right_one textview,如果它很短,则保持正确替换right_one textview部分

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginLeft="10dp"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/left_one>
     <TextView
            android:id="@+id/right_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:gravity="center"
            android:maxLines="1"
            android:ellipsize="end"
        />
</RelativeLayout>

答案 1 :(得分:0)

添加:

android:layout_toLeftOf="@+id/right_one"
android:layout_marginRight="10dp"

left_one TextView

答案 2 :(得分:0)

你可以这样做。

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


   <TextView
       android:id="@+id/left_one"
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
       android:layout_marginBottom="7dp"
       android:gravity="bottom"
       android:layout_weight="0.3"
       android:text="Left text "/>

   <TextView
       android:id="@+id/right_one"
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
       android:layout_alignParentRight="true"
       android:gravity="center"
       android:maxLines="1"
       android:ellipsize="end"
       android:layout_weight="0.7"
       android:layout_marginLeft="10dp"
       android:text="edkjfcnrdskjvkjrdfvsxsdcndsjkvnjksdnvkj 
        sdjkvbksdbvkj zskjvn jsdnbjkvfdbde"/>

  </LinearLayout>