Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 相对布局与其他布局可以';我不能排队_Android_Android Relativelayout - Fatal编程技术网

Android 相对布局与其他布局可以';我不能排队

Android 相对布局与其他布局可以';我不能排队,android,android-relativelayout,Android,Android Relativelayout,我正在创建一个应用程序,它基于一些数据库数据有几个框。当然,这些框需要以特定的格式显示特定的信息 从程序上讲,我在过去几天里尝试过RelativeLayout,LinearLayout,GridLayout,甚至TableLayout,都无法得到正确的结果 这就是我试图实现的布局。。。。 这是我到目前为止的代码的基本部分 // Create Main Box for spacing RelativeLayout acctrl = new RelativeLayo

我正在创建一个应用程序,它基于一些数据库数据有几个框。当然,这些框需要以特定的格式显示特定的信息

从程序上讲,我在过去几天里尝试过
RelativeLayout
LinearLayout
GridLayout
,甚至
TableLayout
,都无法得到正确的结果

这就是我试图实现的布局。。。。

这是我到目前为止的代码的基本部分

        // Create Main Box for spacing
        RelativeLayout acctrl = new RelativeLayout(this);
        RelativeLayout.LayoutParams acctrlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 225);
        acctrlp.setMargins(15, 5, 15, 5);
        acctrl.setBackgroundResource(R.drawable.main_account_box);
        acctrl.setId(R.id.rlAcctId);
        acctrl.setClickable(true);
        acctrl.setOnClickListener(acctclick);
        acctrl.setOnLongClickListener(acctlongclick);

        // Account New Ball & Count
        RelativeLayout rlNew = new RelativeLayout(this);
        RelativeLayout.LayoutParams rlpNew = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        rlpNew.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        rlpNew.addRule(RelativeLayout.CENTER_IN_PARENT);
        rlNew.setId(R.id.rlNewId);

        ImageView ivNew = new ImageView(this);
        RelativeLayout.LayoutParams ivpNew = new RelativeLayout.LayoutParams(168,168);
        ivpNew.addRule(RelativeLayout.CENTER_HORIZONTAL);
        ivpNew.addRule(RelativeLayout.CENTER_IN_PARENT);
        ivNew.setBackgroundResource(R.drawable.acct_msg_ball_blue);
        rlNew.addView(ivNew,ivpNew);

        TextView tvNewCount = new TextView(this);
        RelativeLayout.LayoutParams tvpNewCount = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        tvpNewCount.addRule(RelativeLayout.CENTER_HORIZONTAL);
        tvpNewCount.addRule(RelativeLayout.CENTER_VERTICAL);
        tvNewCount.setId(R.id.tvNewCountId);
        tvNewCount.setTextColor(COLOR.Black);
        tvNewCount.setPadding(0, -5, 0, 0);
        tvNewCount.setTextSize(25);
        tvNewCount.setText(String.valueOf(acct.get_new()));
        rlNew.addView(tvNewCount,tvpNewCount);

        TextView tvNewTitle = new TextView(this);
        RelativeLayout.LayoutParams tvpNewTitle = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        tvpNewTitle.addRule(RelativeLayout.CENTER_HORIZONTAL);
        tvpNewTitle.addRule(RelativeLayout.BELOW,R.id.tvNewCountId);
        tvNewTitle.setTextColor(COLOR.Black);
        tvNewTitle.setTextSize(10);
        tvNewTitle.setPadding(0, 5, 0, 0);
        tvNewTitle.setText("new");
        rlNew.addView(tvNewTitle,tvpNewTitle);
        acctrl.addView(rlNew);

        // Account Name
        TextView tvName = new TextView(this);
        RelativeLayout.LayoutParams tvpName = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        tvpName.addRule(RelativeLayout.ALIGN_PARENT_TOP);
        tvpName.addRule(RelativeLayout.RIGHT_OF,R.id.rlNewId);
        tvpName.addRule(RelativeLayout.LEFT_OF,R.id.tvCountId);
        tvName.setId(R.id.tvNameId);
        tvName.setTextColor(COLOR.Black);
        tvName.setPadding(5, 0, 5, 5);
        tvName.setTextSize(25);
        tvName.setText(acct.get_name());
        tvName.setEllipsize(TextUtils.TruncateAt.END);
        tvName.setSingleLine();
        acctrl.addView(tvName, tvpName);

        // Account Position
        TextView tvPos = new TextView(this);
        RelativeLayout.LayoutParams tvpPos = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        tvpPos.addRule(RelativeLayout.RIGHT_OF,R.id.rlNewId);
        tvpEmail.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        tvpPos.addRule(RelativeLayout.LEFT_OF,R.id.tvCountId);
        tvPos.setId(R.id.tvPosId);
        tvPos.setTextColor(COLOR.Black);
        tvEmail.setPadding(5, 5, 5, 0);
        tvEmail.setTextSize(15);
        tvEmail.setText(acct.get_pos());
        tvEmail.setEllipsize(TextUtils.TruncateAt.END);
        tvEmail.setSingleLine();
        acctrl.addView(tvPos, tvpPos);
我不确定这是不是最好的办法。它对整个框使用一个
RelativeLayout
。然后,它使用另一个
RelativeLayout
将球和两个不同高度的
textView
置于其左侧的中心位置。我甚至还没有开始讨论TOTAL JOBS部分,但这可能需要另一个内部
RelativeLayout
LinearLayout
来实现差异高度
文本视图的居中

除了令人困惑的复杂性,当前的问题还涉及到球

1) 我无法使球在禁区内垂直居中。。。不管我怎么努力。此代码将其放在左上角

2) 我不得不使用一些基于垂直方向的负填充来“模糊”球内两个不同高度
文本视图的中心。不确定这是否是实现这一目标的最佳方式

任何关于如何解决我的理想问题的建议都将不胜感激。。。我用这个拔头发。正如我所说,我尝试了各种不同的布局命令,但似乎我越深入这些命令,我就丢失了一些定位、居中或覆盖的关键元素


谢谢…

对于所需的带有图像的UI,有xml代码 SampleActivity.java

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.widget.TextView;


public class SampleActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample_layout);

        TextView textView = (TextView) findViewById(R.id.tvinitial);
        String newName = "New";
        SpannableString ss1 = new SpannableString(newName);
        ss1.setSpan(new RelativeSizeSpan(0.6f), 0, newName.length(), 0); // set size
        ss1.setSpan(new ForegroundColorSpan(Color.WHITE), 0, newName.length(), 0);
        textView.setText("");
        textView.append("15");
        textView.append("\n");
        textView.append(ss1);
    }
}
可绘制XML circle.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <corners android:radius="35dp" />

            <solid android:color="#4cc9df" />

            <stroke android:width="1dp" android:color="#4cc9df" />
        </shape>
    </item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <corners android:radius="20dp" />

            <solid android:color="@android:color/white" />

            <stroke android:width="1dp" android:color="@android:color/white" />
        </shape>
    </item>
</selector>
<?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="wrap_content"
              android:background="#e9e9e9"
              android:orientation="vertical"
              android:layout_gravity="center_vertical"
              android:padding="10dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="@drawable/round_corner"
        android:padding="10dp">


        <ImageView
            android:id="@+id/arrow"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:background="@null"
            android:src="@drawable/ic_loc_arrow"/>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_below="@+id/arrow"
            android:layout_marginLeft="10dp">

            <TextView
                android:id="@+id/tvinitial"
                android:layout_width="65dp"
                android:layout_height="65dp"
                android:layout_centerVertical="true"
                android:background="@drawable/circle"
                android:fontFamily="sans-serif-medium"
                android:gravity="center"
                android:padding="5dp"
                android:text="@string/new_name"
                android:textColor="@android:color/white"
                android:textSize="18sp"
                android:textStyle="bold"/>


            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="10dp"
                android:layout_toRightOf="@+id/tvinitial">

                <TextView
                    android:id="@+id/txtName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:fontFamily="sans-serif-condensed"
                    android:text="ADAM JUNE"
                    android:textColor="#474747"
                    android:textSize="25sp"
                    android:textStyle="normal"/>

                <TextView
                    android:id="@+id/second_txt"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginTop="25dp"
                    android:fontFamily="sans-serif-condensed"
                    android:text="Accountant"
                    android:textColor="#474747"
                    android:textSize="16sp"
                    android:textStyle="bold"/>
            </FrameLayout>

        </RelativeLayout>


        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_below="@+id/arrow"
            android:layout_toLeftOf="@+id/right_layout">

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical">


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:gravity="center"
                    android:text="TOTAL JOBS"
                    android:textColor="#3881a4"
                    android:textSize="14sp"
                    android:textStyle="bold"/>


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:gravity="center"
                    android:text="125"
                    android:layout_marginTop="10dp"
                    android:textColor="#3881a4"
                    android:textSize="50sp"
                    android:textStyle="bold"/>
            </FrameLayout>

        </FrameLayout>

        <View
            android:id="@+id/right_layout"
            android:layout_width="25dp"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/arrow"/>

    </RelativeLayout>


</LinearLayout>

round_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <corners android:radius="35dp" />

            <solid android:color="#4cc9df" />

            <stroke android:width="1dp" android:color="#4cc9df" />
        </shape>
    </item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <corners android:radius="20dp" />

            <solid android:color="@android:color/white" />

            <stroke android:width="1dp" android:color="@android:color/white" />
        </shape>
    </item>
</selector>
<?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="wrap_content"
              android:background="#e9e9e9"
              android:orientation="vertical"
              android:layout_gravity="center_vertical"
              android:padding="10dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="@drawable/round_corner"
        android:padding="10dp">


        <ImageView
            android:id="@+id/arrow"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:background="@null"
            android:src="@drawable/ic_loc_arrow"/>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_below="@+id/arrow"
            android:layout_marginLeft="10dp">

            <TextView
                android:id="@+id/tvinitial"
                android:layout_width="65dp"
                android:layout_height="65dp"
                android:layout_centerVertical="true"
                android:background="@drawable/circle"
                android:fontFamily="sans-serif-medium"
                android:gravity="center"
                android:padding="5dp"
                android:text="@string/new_name"
                android:textColor="@android:color/white"
                android:textSize="18sp"
                android:textStyle="bold"/>


            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="10dp"
                android:layout_toRightOf="@+id/tvinitial">

                <TextView
                    android:id="@+id/txtName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:fontFamily="sans-serif-condensed"
                    android:text="ADAM JUNE"
                    android:textColor="#474747"
                    android:textSize="25sp"
                    android:textStyle="normal"/>

                <TextView
                    android:id="@+id/second_txt"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginTop="25dp"
                    android:fontFamily="sans-serif-condensed"
                    android:text="Accountant"
                    android:textColor="#474747"
                    android:textSize="16sp"
                    android:textStyle="bold"/>
            </FrameLayout>

        </RelativeLayout>


        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_below="@+id/arrow"
            android:layout_toLeftOf="@+id/right_layout">

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical">


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:gravity="center"
                    android:text="TOTAL JOBS"
                    android:textColor="#3881a4"
                    android:textSize="14sp"
                    android:textStyle="bold"/>


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:gravity="center"
                    android:text="125"
                    android:layout_marginTop="10dp"
                    android:textColor="#3881a4"
                    android:textSize="50sp"
                    android:textStyle="bold"/>
            </FrameLayout>

        </FrameLayout>

        <View
            android:id="@+id/right_layout"
            android:layout_width="25dp"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/arrow"/>

    </RelativeLayout>


</LinearLayout>

sample_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <corners android:radius="35dp" />

            <solid android:color="#4cc9df" />

            <stroke android:width="1dp" android:color="#4cc9df" />
        </shape>
    </item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <corners android:radius="20dp" />

            <solid android:color="@android:color/white" />

            <stroke android:width="1dp" android:color="@android:color/white" />
        </shape>
    </item>
</selector>
<?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="wrap_content"
              android:background="#e9e9e9"
              android:orientation="vertical"
              android:layout_gravity="center_vertical"
              android:padding="10dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="@drawable/round_corner"
        android:padding="10dp">


        <ImageView
            android:id="@+id/arrow"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:background="@null"
            android:src="@drawable/ic_loc_arrow"/>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_below="@+id/arrow"
            android:layout_marginLeft="10dp">

            <TextView
                android:id="@+id/tvinitial"
                android:layout_width="65dp"
                android:layout_height="65dp"
                android:layout_centerVertical="true"
                android:background="@drawable/circle"
                android:fontFamily="sans-serif-medium"
                android:gravity="center"
                android:padding="5dp"
                android:text="@string/new_name"
                android:textColor="@android:color/white"
                android:textSize="18sp"
                android:textStyle="bold"/>


            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="10dp"
                android:layout_toRightOf="@+id/tvinitial">

                <TextView
                    android:id="@+id/txtName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:fontFamily="sans-serif-condensed"
                    android:text="ADAM JUNE"
                    android:textColor="#474747"
                    android:textSize="25sp"
                    android:textStyle="normal"/>

                <TextView
                    android:id="@+id/second_txt"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginTop="25dp"
                    android:fontFamily="sans-serif-condensed"
                    android:text="Accountant"
                    android:textColor="#474747"
                    android:textSize="16sp"
                    android:textStyle="bold"/>
            </FrameLayout>

        </RelativeLayout>


        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_below="@+id/arrow"
            android:layout_toLeftOf="@+id/right_layout">

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical">


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:gravity="center"
                    android:text="TOTAL JOBS"
                    android:textColor="#3881a4"
                    android:textSize="14sp"
                    android:textStyle="bold"/>


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:gravity="center"
                    android:text="125"
                    android:layout_marginTop="10dp"
                    android:textColor="#3881a4"
                    android:textSize="50sp"
                    android:textStyle="bold"/>
            </FrameLayout>

        </FrameLayout>

        <View
            android:id="@+id/right_layout"
            android:layout_width="25dp"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/arrow"/>

    </RelativeLayout>


</LinearLayout>

ic_loc_arrow.png

手机屏幕截图


我希望这能解决您的问题。

为什么要用java而不是xml来做这件事?如果你想,我可以给你的XML代码,以实现图片中的布局。我也认为在XML更好。顺便说一下,您的代码似乎缺少与其父代码相关的rlNew等的对齐或设置位置。用简单的颜色填充它们,看看发生了什么。我是以编程的方式这样做的,因为要在一个可滚动的页面上显示各种帐户,必须多次调用它。我认为这是最好的处理方法。