Android和两个大小不同的图像之间的中心文本

Android和两个大小不同的图像之间的中心文本,android,android-layout,image-processing,Android,Android Layout,Image Processing,假设我有一个顶部栏,它有一个父容器 我想把文字放在它的中心 在左边我有一个小宽度的图像 在右边我有一个大宽度的图像 (由于图像大小的差异,我为每个图像指定了一个具有相同宽度的父图像。这是为了在能够正确跟踪图像(例如,单击图像)的同时简化文本居中。如果没有必要跟踪单击,我可以确保图像大小相同,并且具有透明度。) 我尝试使用以下布局解决上述问题,但从水平方向看,结果是: 左图像在其父图像中未正确向左对齐 文本紧跟在左侧,不在中间 右图紧跟在中间部分之后 因此完全失败了。以下是XML代码: &

假设我有一个顶部栏,它有一个父容器

  • 我想把文字放在它的中心
  • 在左边我有一个小宽度的图像
  • 在右边我有一个大宽度的图像
(由于图像大小的差异,我为每个图像指定了一个具有相同宽度的父图像。这是为了在能够正确跟踪图像(例如,单击图像)的同时简化文本居中。如果没有必要跟踪单击,我可以确保图像大小相同,并且具有透明度。)

我尝试使用以下布局解决上述问题,但从水平方向看,结果是:

  • 左图像在其父图像中未正确向左对齐
  • 文本紧跟在左侧,不在中间
  • 右图紧跟在中间部分之后
因此完全失败了。以下是XML代码:

<?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="match_parent"
  android:orientation="horizontal"
  android:id="@+id/myTitleLayout"
  >
<LinearLayout            
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"
  android:gravity="left"
  android:layout_gravity="left"    
>       
<ImageView android:id="@+id/myTitleLogoLeft" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="left"
            android:layout_gravity="left"
/>                        
</LinearLayout>   
<TextView 
  android:id="@+id/myTitleText" 
  android:text="@string/dotdotdot" 
  android:layout_width="wrap_content" 
  android:layout_height="match_parent"
  android:gravity="center"  
  android:layout_gravity="center"    
/>
<LinearLayout         
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"
  android:gravity="right"
  android:layout_gravity="right"
>       
<ImageView android:id="@+id/myTitleLogoRight" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="right"
            android:layout_gravity="right"                         
/>                        
</LinearLayout>


</LinearLayout>

检查下面的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     
 android:layout_width="match_parent" 
  android:layout_height="wrap_parent"
  android:orientation="horizontal"
  android:id="@+id/myTitleLayout"
  >
<LinearLayout            
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"
  android:layout_alignParentLeft="true"
>       
<ImageView android:id="@+id/myTitleLogoLeft" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="left"
            android:layout_gravity="left"
/>                        
</LinearLayout>   
<TextView 
  android:id="@+id/myTitleText" 
  android:text="@string/dotdotdot" 
  android:layout_width="wrap_content" 
  android:layout_height="match_parent"
  android:layout_centerInParent="true"
/>
<LinearLayout         
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"  
  android:layout_alignParentRight="true"
>       
<ImageView android:id="@+id/myTitleLogoRight" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="right"
            android:layout_gravity="right"                         
/>                        
</LinearLayout>


</LinearLayout>

就是这样,还有一个建议是在LinearLayout上执行单击事件,而不是图像…

检查下面的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     
 android:layout_width="match_parent" 
  android:layout_height="wrap_parent"
  android:orientation="horizontal"
  android:id="@+id/myTitleLayout"
  >
<LinearLayout            
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"
  android:layout_alignParentLeft="true"
>       
<ImageView android:id="@+id/myTitleLogoLeft" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="left"
            android:layout_gravity="left"
/>                        
</LinearLayout>   
<TextView 
  android:id="@+id/myTitleText" 
  android:text="@string/dotdotdot" 
  android:layout_width="wrap_content" 
  android:layout_height="match_parent"
  android:layout_centerInParent="true"
/>
<LinearLayout         
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"  
  android:layout_alignParentRight="true"
>       
<ImageView android:id="@+id/myTitleLogoRight" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="right"
            android:layout_gravity="right"                         
/>                        
</LinearLayout>


</LinearLayout>
Try this way,hope this will help you to solve your problem.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/myTitleLayout"
    android:gravity="center">

    <ImageView
        android:id="@+id/myTitleLogoLeft"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:id="@+id/myTitleText"
            android:text="@string/dotdotdot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>


    <ImageView android:id="@+id/myTitleLogoRight"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp" />

</LinearLayout>

就是这样,还有一个建议是在LinearLayout上执行单击事件,而不是图像…

检查下面的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     
 android:layout_width="match_parent" 
  android:layout_height="wrap_parent"
  android:orientation="horizontal"
  android:id="@+id/myTitleLayout"
  >
<LinearLayout            
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"
  android:layout_alignParentLeft="true"
>       
<ImageView android:id="@+id/myTitleLogoLeft" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="left"
            android:layout_gravity="left"
/>                        
</LinearLayout>   
<TextView 
  android:id="@+id/myTitleText" 
  android:text="@string/dotdotdot" 
  android:layout_width="wrap_content" 
  android:layout_height="match_parent"
  android:layout_centerInParent="true"
/>
<LinearLayout         
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"  
  android:layout_alignParentRight="true"
>       
<ImageView android:id="@+id/myTitleLogoRight" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="right"
            android:layout_gravity="right"                         
/>                        
</LinearLayout>


</LinearLayout>
Try this way,hope this will help you to solve your problem.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/myTitleLayout"
    android:gravity="center">

    <ImageView
        android:id="@+id/myTitleLogoLeft"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:id="@+id/myTitleText"
            android:text="@string/dotdotdot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>


    <ImageView android:id="@+id/myTitleLogoRight"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp" />

</LinearLayout>

就是这样,还有一个建议是在LinearLayout上执行单击事件,而不是图像…

检查下面的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     
 android:layout_width="match_parent" 
  android:layout_height="wrap_parent"
  android:orientation="horizontal"
  android:id="@+id/myTitleLayout"
  >
<LinearLayout            
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"
  android:layout_alignParentLeft="true"
>       
<ImageView android:id="@+id/myTitleLogoLeft" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="left"
            android:layout_gravity="left"
/>                        
</LinearLayout>   
<TextView 
  android:id="@+id/myTitleText" 
  android:text="@string/dotdotdot" 
  android:layout_width="wrap_content" 
  android:layout_height="match_parent"
  android:layout_centerInParent="true"
/>
<LinearLayout         
  android:layout_height="match_parent"
  android:orientation="horizontal"  
  android:layout_width="100dp"  
  android:layout_alignParentRight="true"
>       
<ImageView android:id="@+id/myTitleLogoRight" 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent"
            android:background="@drawable/shared__menu__transparent"
            android:padding="2dp"
            android:visibility="visible"
            android:gravity="right"
            android:layout_gravity="right"                         
/>                        
</LinearLayout>


</LinearLayout>
Try this way,hope this will help you to solve your problem.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/myTitleLayout"
    android:gravity="center">

    <ImageView
        android:id="@+id/myTitleLogoLeft"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:id="@+id/myTitleText"
            android:text="@string/dotdotdot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>


    <ImageView android:id="@+id/myTitleLogoRight"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp" />

</LinearLayout>

就是这样,还有一个建议是在LinearLayout上执行单击事件,而不是图像…

尝试这种方式,希望这能帮助您解决问题。
Try this way,hope this will help you to solve your problem.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/myTitleLayout"
    android:gravity="center">

    <ImageView
        android:id="@+id/myTitleLogoLeft"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:id="@+id/myTitleText"
            android:text="@string/dotdotdot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>


    <ImageView android:id="@+id/myTitleLogoRight"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:adjustViewBounds="true"
        android:padding="2dp" />

</LinearLayout>
试试这种方法,希望这能帮助您解决问题。
试试这种方法,希望这能帮助您解决问题。
试试这种方法,希望这能帮助您解决问题。

使用相对布局而不是线性布局。它使大多数布局更容易

<?xml version="1.0" encoding="utf-8"?>
<RelateiveLaoyut xmlns:android="http://schemas.android.com/apk/res/android"     
  android:layout_width="match_parent" 
  android:layout_height="match_parent"
  android:id="@+id/myTitleLayout">

    <TextView 
      android:id="@+id/myTitleText" 
      android:text="@string/dotdotdot" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"
      android:layout_centerInParent="true"   
    />

    <ImageView android:id="@+id/myTitleLogoLeft" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toLeftOf="@id/myTitleText"
    />

    <ImageView android:id="@+id/myTitleLogoRight" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toRightOf="@id/myTitleText"                       
    /> 
</RelateiveLaoyut >

如果左侧图像需要位于条形图的左侧,请向其添加
android:layout\u alignParentLeft=“true”
。对于具有
layout\u android:alignParentRight=“true”
的右侧图像,也是如此。
还可以在视图中添加一些边距,这样它们就不会相互粘连。

使用相对线而不是线性布局。它使大多数布局更容易

<?xml version="1.0" encoding="utf-8"?>
<RelateiveLaoyut xmlns:android="http://schemas.android.com/apk/res/android"     
  android:layout_width="match_parent" 
  android:layout_height="match_parent"
  android:id="@+id/myTitleLayout">

    <TextView 
      android:id="@+id/myTitleText" 
      android:text="@string/dotdotdot" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"
      android:layout_centerInParent="true"   
    />

    <ImageView android:id="@+id/myTitleLogoLeft" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toLeftOf="@id/myTitleText"
    />

    <ImageView android:id="@+id/myTitleLogoRight" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toRightOf="@id/myTitleText"                       
    /> 
</RelateiveLaoyut >

如果左侧图像需要位于条形图的左侧,请向其添加
android:layout\u alignParentLeft=“true”
。对于具有
layout\u android:alignParentRight=“true”
的右侧图像,也是如此。
还可以在视图中添加一些边距,这样它们就不会相互粘连。

使用相对线而不是线性布局。它使大多数布局更容易

<?xml version="1.0" encoding="utf-8"?>
<RelateiveLaoyut xmlns:android="http://schemas.android.com/apk/res/android"     
  android:layout_width="match_parent" 
  android:layout_height="match_parent"
  android:id="@+id/myTitleLayout">

    <TextView 
      android:id="@+id/myTitleText" 
      android:text="@string/dotdotdot" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"
      android:layout_centerInParent="true"   
    />

    <ImageView android:id="@+id/myTitleLogoLeft" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toLeftOf="@id/myTitleText"
    />

    <ImageView android:id="@+id/myTitleLogoRight" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toRightOf="@id/myTitleText"                       
    /> 
</RelateiveLaoyut >

如果左侧图像需要位于条形图的左侧,请向其添加
android:layout\u alignParentLeft=“true”
。对于具有
layout\u android:alignParentRight=“true”
的右侧图像,也是如此。
还可以在视图中添加一些边距,这样它们就不会相互粘连。

使用相对线而不是线性布局。它使大多数布局更容易

<?xml version="1.0" encoding="utf-8"?>
<RelateiveLaoyut xmlns:android="http://schemas.android.com/apk/res/android"     
  android:layout_width="match_parent" 
  android:layout_height="match_parent"
  android:id="@+id/myTitleLayout">

    <TextView 
      android:id="@+id/myTitleText" 
      android:text="@string/dotdotdot" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"
      android:layout_centerInParent="true"   
    />

    <ImageView android:id="@+id/myTitleLogoLeft" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toLeftOf="@id/myTitleText"
    />

    <ImageView android:id="@+id/myTitleLogoRight" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"
        android:background="@drawable/shared__menu__transparent"
        android:padding="2dp"
        android:visibility="visible"
        android:layout_toRightOf="@id/myTitleText"                       
    /> 
</RelateiveLaoyut >

如果左侧图像需要位于条形图的左侧,请向其添加
android:layout\u alignParentLeft=“true”
。对于具有
layout\u android:alignParentRight=“true”
的右侧图像,也是如此。
并在视图中添加一些边距,这样它们就不会相互粘连。

这主要是除了左侧图像(在本例中,左侧图像的宽度较小,但由于图像是在线下载的,因此我无法事先知道尺寸)之外的其他图像才有效然后在100dp内居中,而不是与左侧对齐这主要起作用,但左侧图像除外(在本例中,左侧图像的宽度较小,但由于图像是在线下载的,我事先无法知道尺寸),然后在100dp内居中,而不是与左侧对齐这主要起作用,左侧图像除外(在本例中宽度较小,但由于图像是在线下载的,我无法事先知道尺寸)然后在100dp内居中,而不是与左侧对齐这主要起作用,但左侧图像除外(在本例中宽度较小,但由于图像是在线下载的,我无法事先知道尺寸)然后在100dp内居中,而不是与左侧对齐i使用此组合的wih运行时计算结果调整某些超透明图像的宽度i使用此组合的wih运行时计算结果调整某些超透明图像的宽度i使用此组合的wih运行时计算结果调整som的宽度超透明图像我最终使用了这个组合,运行时计算调整了一些超透明图像的宽度