Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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_Xml - Fatal编程技术网

Android 如何在文本视图中同时将文本和图标居中?

Android 如何在文本视图中同时将文本和图标居中?,android,xml,Android,Xml,我有这样的要求: 我把代码写在下面: <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shape_rect_green_half_circle" android:gravity="center" android:orientation="horizontal">

我有这样的要求: 我把代码写在下面:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/shape_rect_green_half_circle"
    android:gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="@string/health_consult_ordinary_doctor"
        android:textColor="@color/white"
        android:textSize="15.3dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="18dp"
        android:text="2次"
        android:textColor="@color/white"
        android:textSize="15.3dp" />
</LinearLayout>
因此,问题是如何在
TextView
中同时将文本和图标居中。我知道这个问题可以通过在布局中编写
ImageView
TextView
来解决,但是有什么解决方案吗? 我在网上搜索了很长时间,结果一无所获。请帮助或尝试给出一些关于如何实现这一点的想法

编辑:我发现:当我在
TextView
中设置
android:layout\u width=“wrap\u content”
时,它可以工作。但是当我设置
android:layout\u width=“wrap\u content”
android:layout\u weight=“1”
时,它不起作用。有人能告诉我为什么吗?


<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">

        <TextView
            android:id="@+id/txt_swift"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2次"
            android:textColor="@android:color/white"
            android:textSize="@dimen/_18dp"
            android:drawableLeft="@drawable/titlebar_consult_v6"
            android:drawablePadding="@dimen/_15dp"
            android:gravity="center"/>

    </LinearLayout>
像这样加上


像这样加上

也许使用一个类似的方法可以获得类似的结果。大概是这样的:

SpannableStringBuilder builder = new SpannableStringBuilder(text);
Bitmap image = BitmapFactory.decodeResource(context.getResources(), drawableId);
builder.setSpan(new ImageSpan(context, image, ImageSpan.ALIGN_BASELINE),
                index , index+1, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
也许使用一个类似的方法可以获得类似的结果。大概是这样的:

SpannableStringBuilder builder = new SpannableStringBuilder(text);
Bitmap image = BitmapFactory.decodeResource(context.getResources(), drawableId);
builder.setSpan(new ImageSpan(context, image, ImageSpan.ALIGN_BASELINE),
                index , index+1, Spannable.SPAN_INCLUSIVE_INCLUSIVE);

试试这个,我又添加了一个
LinearLayout
,并将您的
TextView
放在里面

<LinearLayout
    android:background="@drawable/shape_rect_green_half_circle"
    android:gravity="center"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="horizontal">

    <LinearLayout
        android:gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_width="0dp">

        <TextView
            android:drawableLeft="@drawable/titlebar_consult_v6"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/health_consult_ordinary_doctor"
            android:textColor="@color/white"
            android:textSize="15.3dp" />
    </LinearLayout>

    <TextView
        android:layout_height="wrap_content"
        android:layout_marginRight="18dp"
        android:layout_width="wrap_content"
        android:text="2次"
        android:textColor="@color/white"
        android:textSize="15.3dp" />
</LinearLayout>

试试这个,我又添加了一个
LinearLayout
,并将您的
TextView
放在里面

<LinearLayout
    android:background="@drawable/shape_rect_green_half_circle"
    android:gravity="center"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="horizontal">

    <LinearLayout
        android:gravity="center"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_width="0dp">

        <TextView
            android:drawableLeft="@drawable/titlebar_consult_v6"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/health_consult_ordinary_doctor"
            android:textColor="@color/white"
            android:textSize="15.3dp" />
    </LinearLayout>

    <TextView
        android:layout_height="wrap_content"
        android:layout_marginRight="18dp"
        android:layout_width="wrap_content"
        android:text="2次"
        android:textColor="@color/white"
        android:textSize="15.3dp" />
</LinearLayout>

编辑答案:检查此项:工作正常

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_button_primary"
    android:layout_gravity="center"
    xmlns:android="http://schemas.android.com/apk/res/android">


    <TextView
        android:id="@+id/tvView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/titlebar_consult_v6"
        android:drawablePadding="10.7dp"
        android:gravity="left"
        android:layout_centerHorizontal="true"
        android:text="@string/health_consult_ordinary_doctor"
        android:textColor="@color/white"
        android:textSize="15.3dp"
        android:padding="10dp"
        />

    <TextView
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="18dp"
        android:text="2次"
        android:textColor="@color/white"
        android:textSize="15.3dp"
        android:layout_centerVertical="true"
        />
</RelativeLayout>

编辑答案:检查此项:工作正常

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_button_primary"
    android:layout_gravity="center"
    xmlns:android="http://schemas.android.com/apk/res/android">


    <TextView
        android:id="@+id/tvView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/titlebar_consult_v6"
        android:drawablePadding="10.7dp"
        android:gravity="left"
        android:layout_centerHorizontal="true"
        android:text="@string/health_consult_ordinary_doctor"
        android:textColor="@color/white"
        android:textSize="15.3dp"
        android:padding="10dp"
        />

    <TextView
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="18dp"
        android:text="2次"
        android:textColor="@color/white"
        android:textSize="15.3dp"
        android:layout_centerVertical="true"
        />
</RelativeLayout>



将衬垫从中取出textView@hackingforgirls你是说android:drawablePadding?我说没用(你的drawable
@drawable/shape\rect\u green\u half\u circle
是一个.png文件吗?@Sabeeh不,它是一个XML文件。你应该满足于
android:layout\u width=“wrap\u content”
而不是出于性能原因将它嵌套在另一个
LinearLayout
中。删除
android:layout\u weight=“1”
。将衬垫从中取出textView@hackingforgirls你是说android:drawablePadding?我说它不起作用。:(你的drawable
@drawable/shape\u rect\u green\u half\u circle
是一个.png文件吗?@Sabeeh Nope,它是一个XML文件。你应该满足于
android:layout\u width=“wrap\u content”
而不是将其嵌套在另一个
线性布局中
以提高性能。删除
android:layout\u weight=“1”
。回答太棒了!它可以工作,但我想知道为什么在设置
android:layout\u width=wrap\u内容时它可以工作"
?@dysaniazz
wrap\u content
用于获取宽度大小,该宽度大小将在视图中对内容进行包装。每当您希望宽度大小根据视图中的内容进行增长时,请使用
wrap\u content
,如果使用
match\u parent
则宽度将等于
父版面的宽度t=“1”然后它将获得父级的完整宽度,因为父级布局中除了此之外没有任何其他布局。如果您再添加一个布局为_weight=“1”的textview,则两个textview的宽度将相等,并且它们将获得父级的完整宽度谢谢您,兄弟。我给您投票并接受您的答案。:)@我的荣幸:-)愉快的回答!它可以工作,但我想知道为什么在设置
android:layout\u width=wrap\u内容时可以工作“
?@DysaniazzZ
wrap\u content
用于获取宽度大小,该宽度大小将内容包装在视图内。当您希望宽度大小根据其内部内容增长时,请使用
wrap_content
,如果使用
match_parent
,则宽度将等于
parent layout的宽度
@DysaniazzZ,如果您使用layout_weight=“1”然后,它将获得父布局的完整宽度,因为父布局中除了此之外没有任何其他布局。如果您再添加一个布局为“layout_weight=“1”的文本视图,则两个文本视图的宽度将相等,并且它们将获得父视图的全宽谢谢您,兄弟。我投你一票,接受你的回答@我的荣幸:-)祝你好运谢谢,兄弟。它确实有效。但这不是我想要的。在第一幅图像中,它希望让第一个
TextView
占据其父布局的其余部分,并将其内容中心放在其中。在代码中,您在其父布局中创建了第一个
TextView
中心。谢谢,兄弟。它确实有效。但这不是我想要的。在第一幅图像中,它希望让第一个
TextView
占据其父布局的其余部分,并将其内容中心放在其中。在代码中,将第一个
TextView
置于其父布局的中心。