无法在Android TextView上绘制背景

时间:2019-04-01 22:46:15

标签: android android-layout

我试图在LinearLayout的{​​{1}}内的项目上添加网格线,并试图在RecyclerView的TextViews上将它们绘制为背景。但是,用户界面实际上并没有正确绘制背景。

我可以在AS的设计预览中看到,要显示的确实是带有网格线的单元格,但实际上并没有在应用程序中以这种方式呈现。我在做什么错了?

这是我的布局行

RelativeLayout

这是我在名为<?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="@drawable/border" android:orientation="horizontal"> <TextView android:id="@+id/sensorName" android:layout_width="0dp" android:layout_weight="1" android:background="@drawable/border" style="@style/BodyText"/> <TextView android:id="@+id/sensorData" android:layout_width="0dp" android:layout_weight="1" android:background="@drawable/border" style="@style/BodyText"/> </LinearLayout> 的xml文件中定义为背景的形状

border.xml

这是无边界的布局。只看它是否改变,我定义了我的“边框”以绘制完全黑色的背景,但它根本没有显示

enter image description here

在屏幕的设计预览中,我看到它应该显示出来。

enter image description here

这是<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- View background color --> <solid android:color="@color/black" > </solid> <!-- View border color and width --> <stroke android:width="1dp" android:color="@color/black" > </stroke> <!-- The radius makes the corners rounded --> <corners android:radius="2dp" > </corners> </shape> 文件

@style/BodyText

4 个答案:

答案 0 :(得分:0)

在您的border.xml中,您有

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

<stroke
    android:width="1dp"
    android:color="@color/black" >
</stroke>

因此,背景和线条颜色为黑色。另外,默认情况下,文本为黑色。

将背景设置为透明或任何其他颜色。

    <solid
    android:color="#00FFFFFF" > // transparent
    </solid>

答案 1 :(得分:0)

我稍微改变了行布局。

<?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:layout_marginTop="1dp"
android:orientation="horizontal">

<TextView
    android:id="@+id/sensorName"
    style="@style/BodyText"
    android:layout_width="0dp"
    android:layout_marginEnd="0.5dp"
    android:layout_weight="1"
    android:background="@drawable/temp1"
    android:text="Collector" />

<TextView
    android:id="@+id/sensorData"
    style="@style/BodyText"
    android:layout_width="0dp"
    android:layout_marginStart="0.5dp"
    android:layout_weight="1"
    android:background="@drawable/temp1"
    android:text="--" />

答案 2 :(得分:0)

使用Textview的宽度作为wrap_content或match_parent。 使用背景时请勿使用0dp。

答案 3 :(得分:0)

根据需要更改border.xml中的纯色。

我习惯#C8E7F5这种颜色

  

border.xml

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

    <!-- View background color -->
    <solid
        android:color="#C8E7F5" >
    </solid>

    <!-- View border color and width -->
    <stroke
        android:width="1dp"
        android:color="#000000" >
    </stroke>

    <!-- The radius makes the corners rounded -->
    <corners
        android:radius="2dp"   >
    </corners>

</shape>

我正在对布局文件进行一些更改

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/border">
        <TextView
            android:id="@+id/sensorName"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/border"
            style="@style/BodyText"
            android:text="Text1"/>

        <TextView
            android:id="@+id/sensorData"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/border"
            style="@style/BodyText"
            android:text="Text2"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            style="@style/BodyText"
            android:text="Text1"/>

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            style="@style/BodyText"
            android:text="Text2"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            style="@style/BodyText"
            android:text="Text1"/>

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            style="@style/BodyText"
            android:text="Text2"/>
    </LinearLayout>

</LinearLayout>

以上代码后的输出如下图所示:

enter image description here

希望它对您有用。