2016-11-21 55 views
0

我想建立这样的布局问题相匹配的宽度和高度

enter image description here

但我得到这样的:在位置(地图按钮将是理想的高度和宽度,但TextView的不企及的高度)

enter image description here

我的位置是TextView,我的目标是EditText

我希望TextViewEditText是相同的宽度,而MAP按钮保持“正方形”。

如何获得文字高度以匹配并制作方形贴图按钮?

这里是我的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:id="@+id/fragment_details" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       tools:context="com.mycompany.controller.DetailsFragment"> 


    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/viewStatus" 
     android:layout_marginTop="5dp"> 


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


      <!-- LOCATION --> 
      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:text="LOCATION" 
       android:textColor="@color/COLOR_BLUE" 
       android:textSize="24sp"/> 

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

       <TextView 
        android:id="@+id/tvLocation" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_marginTop="10dp" 
        android:layout_weight=".8" 
        android:background="@color/COLOR_LIGHT_GREY" 
        android:text="123 MAIN ST., CHATTANOOGA TN 37404" 
        android:textSize="24sp"/> 

       <Button 
        android:id="@+id/btnMapLocation" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_weight=".2" 
        android:background="@color/COLOR_BLUE" 
        android:text="MAP" 
        android:textColor="@color/COLOR_WHITE"/> 
      </LinearLayout> 

      <!-- DESTINATION --> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:text="DESTINATION" 
       android:textColor="@color/COLOR_BLUE" 
       android:textSize="24sp"/> 

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

       <EditText 
        android:id="@+id/editDestination" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_weight=".8" 
        android:ems="10" 
        android:inputType="textMultiLine" 
        android:text="407 Broad St., Anywhere ST 00000"/> 


       <Button 
        android:id="@+id/btnMapDestination" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_weight=".2" 
        android:background="@color/COLOR_BLUE" 
        android:text="MAP" 
        android:textColor="@color/COLOR_WHITE"/> 
      </LinearLayout> 


     </LinearLayout> 
    </ScrollView> 

</RelativeLayout> 
+0

使用加权将永远不能保证事情是正方形,点是他们伸展到与布局方向(在这种情况下是水平方向)相关的特定大小。如果你想要一些东西是正方形的,你需要明确地设置宽度和高度,或者当绘制视图并设置宽度匹配时,你需要获得测量的高度。 – zgc7009

回答

2

我没有在你的代码稍加修改检查它!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/fragment_details" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      > 


<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:layout_marginTop="5dp"> 


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


     <!-- LOCATION --> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:text="LOCATION" 

      android:textSize="24sp"/> 

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

      <TextView 
       android:id="@+id/searchText" 
       android:text="Search text here" 
       android:layout_weight="0.8" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:background="#c8c8c8" 
       /> 

      <Button 
       android:id="@+id/searchButton" 
       android:text="MAP" 
       android:layout_weight="0.2" 

       android:layout_alignParentRight="true" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       /> 
      /> 
     </LinearLayout> 

     <!-- DESTINATION --> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:text="DESTINATION" 

      android:textSize="24sp"/> 

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

      <EditText 
       android:id="@+id/searchText" 
       android:text="Search text" 
       android:layout_weight="0.8" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       /> 

      <Button 
       android:id="@+id/searchButton" 
       android:text="MAP" 
       android:layout_weight="0.2" 
       android:layout_alignParentRight="true" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       /> 
     </LinearLayout> 

    </LinearLayout> 
</ScrollView> 

</RelativeLayout> 
0

由于您使用android:layout_weight,设置android:layout_width="0dp"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:id="@+id/fragment_details" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       tools:context="com.mycompany.controller.DetailsFragment"> 


    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/viewStatus" 
     android:layout_marginTop="5dp"> 


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


      <!-- LOCATION --> 
      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:text="LOCATION" 
       android:textColor="@color/COLOR_BLUE" 
       android:textSize="24sp"/> 

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

       <TextView 
        android:id="@+id/tvLocation" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_marginTop="10dp" 
        android:layout_weight=".8" 
        android:background="@color/COLOR_LIGHT_GREY" 
        android:text="123 MAIN ST., CHATTANOOGA TN 37404" 
        android:textSize="24sp"/> 

       <Button 
        android:id="@+id/btnMapLocation" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight=".2" 
        android:background="@color/COLOR_BLUE" 
        android:text="MAP" 
        android:textColor="@color/COLOR_WHITE"/> 
      </LinearLayout> 

      <!-- DESTINATION --> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:text="DESTINATION" 
       android:textColor="@color/COLOR_BLUE" 
       android:textSize="24sp"/> 

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

       <EditText 
        android:id="@+id/editDestination" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight=".8" 
        android:ems="10" 
        android:inputType="textMultiLine" 
        android:text="407 Broad St., Anywhere ST 00000"/> 


       <Button 
        android:id="@+id/btnMapDestination" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight=".2" 
        android:background="@color/COLOR_BLUE" 
        android:text="MAP" 
        android:textColor="@color/COLOR_WHITE"/> 
      </LinearLayout> 


     </LinearLayout> 
    </ScrollView> 

</RelativeLayout>