水平LinearLayout中TextView中的字体与父高度不匹配?

时间:2016-08-27 11:04:59

标签: android android-layout android-linearlayout textview

据我所知,已多次讨论,但我找不到解决方案。 我特意在颜色上标记了所有颜色。这是AlertDialog。

enter image description here

为什么修剪文本本身?我做错了什么?

<?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="match_parent"
    android:background="@drawable/dialogs_background_gradient"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/dialNewGroupCustomNameLay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/customNameTextView"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.3"
            android:gravity="left|center_vertical"
            android:paddingLeft="10dp"
            android:text="@string/group_custom_name_label"
            android:textColor="@color/white"
            android:textSize="15dp" />

        <EditText
            android:id="@+id/newGrNameEditText"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:layout_weight="0.7"
            android:textColor="@color/white"
            android:textCursorDrawable="@null" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/dialNewGroupDefinedLangsLay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_margin="3dp"
            android:background="@color/white" />

        <LinearLayout
            android:id="@+id/newGrDialLangFrom"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.6"
            android:orientation="vertical"></LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_margin="3dp"
            android:background="@color/white" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/newGrNameLay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/purple"
        android:orientation="horizontal"
        android:paddingBottom="30dp"
        android:paddingTop="10dp">

        <TextView
            android:id="@+id/groupNameTextView"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.3"
            android:background="@color/red"
            android:gravity="left|center_vertical"
            android:paddingLeft="10dp"
            android:text="@string/group_name_label"
            android:textColor="@color/white"
            android:textSize="15dp" />

        <TextView
            android:id="@+id/newGrNameTextView"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.7"
            android:background="@color/green"
            android:gravity="left|center_vertical"
            android:paddingLeft="10dp"
            android:paddingBottom="10dp"
            android:text="@string/group_name_label"
            android:textColor="@color/white"
            android:textSize="17dp" />
    </LinearLayout>

</LinearLayout>

添加了完整的XML。还有必要考虑LinearLayout在AlertDialog中。

3 个答案:

答案 0 :(得分:0)

文字高度+填充将导致Teaxtbox(match_parent)的高度。

答案 1 :(得分:0)

你的LinearLayout从其子节点获得高度:

  //global scope
int pos_clicked=-1;
class View_Holder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView txt;
    public View_Holder(View itemView) {
        super(itemView);
        txt = (TextView) itemView.findViewById(R.id.txt);
        txt.setOnclickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent;
        pos_clicked=getAdapterPosition();
          notifyDataSetChanged();
    }}
@Override
public void onBindViewHolder(View_Holder holder, int position) {
    if(pos_clicked==position){
        holder.txt.setVisibility(View.VISIBLE);
    }
    else{
        holder.txt.setVisibility(View.GONE);
    }}

并且子项从父LinearLayout获取高度:

android:layout_height="wrap_content"

这是错误。你应该有一个实际指定高度的地方。

答案 2 :(得分:0)

我删除了所有填充和边距底部和顶部。添加了一个小视图。

enter image description here

    <View
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_margin="3dp"/>

看起来更好。