背景百分比

时间:2018-07-27 06:27:06

标签: android android-layout android-linearlayout background-color android-relativelayout

我有点困扰,希望您能帮助我。我正在使用Android Studio开发Android应用程序。

我有一个包含2个元素的TableLayout。第一列是在背景上绘制百分比的LinearLayout,第二列是一个简单的textview(例如,我在其中放了两行)。

我已经解决了XML表示的问题,我需要以编程方式进行同样的操作。这是我的XML:

    <TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id = "@+id/tableLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/orionBackground"
            android:orientation="horizontal"
            android:weightSum="100">

            <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="30"
            android:background="@color/orionRed">

            <TextView
                android:layout_width="30dp"
                android:layout_height="wrap_content"
                android:text=""
                android:layout_gravity="right"
                android:textColor="@color/orionWhite"/>

            </LinearLayout>

        </LinearLayout>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"
            android:layout_gravity="right"
            android:background="@color/orionBackground"
            android:textColor="@color/orionWhite"/>
        </TableRow>
        <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/orionBackground"
            android:orientation="horizontal"
            android:weightSum="100">

            <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:background="@color/orionRed">

            <TextView
                android:layout_width="30dp"
                android:layout_height="wrap_content"
                android:text=""
                android:textColor="@color/orionWhite"/>

            </LinearLayout>

        </LinearLayout>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="There"
            android:layout_gravity="right"
            android:background="@color/orionBackground"
            android:textColor="@color/orionWhite"/>
    </TableRow>

</TableLayout>

我需要做同样的事情,但是要以编程方式进行,而且我不知道Im的所作所为怎么可能。这是我的代码:

    TableLayout table = (TableLayout)findViewById(R.id.tableLayout);
    /*TextView*/
    TextView textViewHelloWorld = new TextView(getBaseContext());
    textViewHelloWorld.setText("");
    textViewHelloWorld.setLayoutParams(
    new ViewGroup.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT));
    textViewHelloWorld.setTextColor(Color.parseColor("#FFFFFF"));
    /*Child Layout*/
    LinearLayout linearLayout = new LinearLayout(getBaseContext());
    /*Here I set the percentage of the LinearLayout to 10*/
    LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
        0, ViewGroup.LayoutParams.MATCH_PARENT, 10f);
    linearLayout.setLayoutParams(params1);
    linearLayout.setBackgroundColor(Color.parseColor("#A23934"));
    /*Textbox Added | I tested before the above line*/
    linearLayout.addView(textViewHelloWorld);
    /*Parent Layout*/
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,100f);
    LinearLayout parentLayout = new LinearLayout(getBaseContext());
    parentLayout.setOrientation(LinearLayout.HORIZONTAL);
    /*Finally, I added the LinearLayout into de parent LinearLayout*/
    parentLayout.addView(linearLayout,params);
    TableRow rowHeader = new TableRow(getBaseContext());
    TableRow.LayoutParams params10 = new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    rowHeader.setLayoutParams(params10);
    /*Then, the linear layout is Added into de TableRow*/
    rowHeader.addView(parentLayout);
    /*And added to the row*/
    table.addView(rowHeader);

从视觉上看,这就是我需要看到的:

我想完成的事情

enter image description here

这是用于将显示加密货币订单簿中金额百分比的应用程序。

我的问题是我的解决方案只打印整个背景,而应该只打印部分背景。上图显示了由layout_weight属性定义的百分比30和60,但是当我这样做时,以编程方式根本不起作用。

为什么不起作用?

我真的希望您能为此提供帮助。

非常感谢

1 个答案:

答案 0 :(得分:0)

尝试将标高设置为ViewCompat.setElevation(textViewHelloWorld, 10);之类的TextView

所以就像

 TextView textViewHelloWorld = new TextView(getBaseContext());
textViewHelloWorld.setText("sample text");
textViewHelloWorld.setLayoutParams(
new ViewGroup.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT));
textViewHelloWorld.setTextColor(Color.parseColor("#FFFFFF"));
ViewCompat.setElevation(textViewHelloWorld, 10);