我有一个TextView,我需要在正方形内水平和垂直居中。为此,我将它放在RelativeLayout中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="#fff"
>
<TextView
android:id="@+id/centered_text_view_text"
android:layout_centerInParent="true"
android:text="test"
android:background="#00ff00"
android:textColor="#000"
android:textSize="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
我使用LayoutInflater实例化RelativeLayout,然后在RelativeLayout上调用layout方法将它放置在我需要的位置。
LayoutInflater inflater = Helpers.getInflater();
containerLayout = (RelativeLayout) inflater.inflate(R.layout.centered_text_view, null);
textView = (TextView) containerLayout.findViewById(R.id.centered_text_view_text);
... (later in the code)
containerLayout.layout(dayLeft, weekTop, dayRight, weekBottom);
我的问题是TextView不可见。我可以看到RelativeLayout的白色背景,但看不到TextView的文本和背景。
我也试过摆脱RelativeLayout并在TextView上调用layout方法。然而,由于文本只是在文本视图上设置重力后,文本只是水平而不是垂直对齐,所以我无法使其工作。
答案 0 :(得分:0)
首先 - 自定义视图应该扩展某种View.class
。要扩展的类应该是xml
中的根视图。
第二次 - 您保留对containerLayout
(根视图)的引用,这是多余的。此类是根视图。
将containerLayout
替换为this
或完全删除:
textView = (TextView) findViewById(R.id.centered_text_view_text);
第三次 - 我不能说你的膨胀是怎么回事,但我从来没有这样做过。
不要在layout
上调用containerLayout
,而是尝试使用inflate()
方法进行充气。 (扩展View
)
inflate(getContext(), R.layout.view_user_tag, this);
注意我如何将this
设置为根,并使用视图类中的inflater。
您的课程可能如下所示:
public static class TextInLinear extends RelativeLayout {
public TextView textView;
//region default constructers
public void TextInLinear(Context context){
this(context, null);
}
public void TextInLinear(Context context, AttributeSet attrs){
this(context, attrs, 0);
}
public void TextInLinear(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
if(!isInEditMode()) init();
}
//endregion
private void init(){
inflate(getContext(), R.layout.view_user_tag, this);
textView = (TextView) this.findViewById(R.id.centered_text_view_text);
}
/* more methods. i.e. setText(), getText() or whatever */
}