设计编辑精确矩形的文本android线性布局没有硬编码值

时间:2017-12-12 10:20:10

标签: android android-layout android-linearlayout

我想设计

this

布局,即编辑文本的宽度应该是这样的。对于以下代码

<LinearLayout android:layout_below="@+id/txt_buy_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@drawable/side_nav_bar"
android:layout_marginTop="@dimen/activity_vertical_space"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittext_backgound"
        android:hint="Rate"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:layout_weight="1"
        android:drawableRight="@drawable/ic_inr_24"
        android:gravity="center"/>
    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittext_backgound"
        android:hint="Amount"
        android:layout_marginTop="@dimen/view_internal_space"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:layout_weight="1"
        android:drawableRight="@drawable/ic_inr_24"
        android:gravity="center"/>
    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittext_backgound"
        android:hint="Quantity"
        android:layout_marginTop="@dimen/view_internal_space"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:layout_weight="1"
        android:drawableRight="@drawable/ic_bitcoin_24"
        android:gravity="center"/>
    <android.support.v7.widget.AppCompatButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff61fffd"
        android:hint="Rate"
        android:layout_marginTop="@dimen/view_internal_space"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:layout_weight="1"
        android:drawableRight="@drawable/ic_inr_24"
        android:gravity="center"/>
</LinearLayout>

它提供输出,如

this

当我给予内部线性布局的宽度和高度match_parent时,它看起来不太好,当我尝试将左右边距填充到内部线性布局时,设计变得很糟糕。我想设计这个布局而不给出硬编码宽度。请帮忙

3 个答案:

答案 0 :(得分:1)

试试这个:

 <LinearLayout android:layout_below="@+id/txt_buy_info"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="horizontal"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="0.4"
        android:layout_height="wrap_content"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.v7.widget.AppCompatEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Rate"
            android:layout_marginTop="20dp"
            android:textColor="@color/colorBlack"
            android:textColorHint="@color/colorBlack"
            android:gravity="center"/>

        <android.support.v7.widget.AppCompatEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Amount"
            android:layout_marginTop="20dp"
            android:textColor="@color/colorBlack"
            android:textColorHint="@color/colorBlack"
            android:gravity="center"/>

        <android.support.v7.widget.AppCompatEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Quantity"
            android:layout_marginTop="20dp"
            android:textColor="@color/colorBlack"
            android:textColorHint="@color/colorBlack"
            android:gravity="center"/>

        <android.support.v7.widget.AppCompatButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ff61fffd"
            android:hint="Rate"
            android:layout_marginTop="20dp"
            android:textColor="@color/colorBlack"
            android:textColorHint="@color/colorBlack"
            android:gravity="center"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="0.4"
        android:layout_height="wrap_content"/>

    </LinearLayout>

答案 1 :(得分:0)

删除不必要的权重android:layout_weight="1"并向Edittexts添加填充android:padding="10dp" 如下所示

<LinearLayout android:layout_below="@+id/txt_buy_info"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:gravity="center"
          android:background="@drawable/side_nav_bar"
          android:layout_marginTop="@dimen/activity_vertical_space"
          xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.AppCompatEditText
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittext_backgound"
        android:hint="Rate"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:drawableRight="@drawable/ic_inr_24"
        android:gravity="center"/>
    <android.support.v7.widget.AppCompatEditText
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittext_backgound"
        android:hint="Amount"
        android:layout_marginTop="@dimen/view_internal_space"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:drawableRight="@drawable/ic_inr_24"
        android:gravity="center"/>
    <android.support.v7.widget.AppCompatEditText
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittext_backgound"
        android:hint="Quantity"
        android:layout_marginTop="@dimen/view_internal_space"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:drawableRight="@drawable/ic_bitcoin_24"
        android:gravity="center"/>
    <android.support.v7.widget.AppCompatButton
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff61fffd"
        android:hint="Rate"
        android:layout_marginTop="@dimen/view_internal_space"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        android:textSize="@dimen/BTC_value_size"
        android:drawableRight="@drawable/ic_inr_24"
        android:gravity="center"/>
</LinearLayout>

答案 2 :(得分:0)

function getWordsBetweenQuotes(str) {
    return str.match(/(["'])(?:(?=(\\?))\2.)*?\1/g);
}

//请检查我提到的第4行的评论。