在小屏幕上隐藏TextView

在小屏幕上隐藏TextView

问题描述:

我试图在宽度小于500px的屏幕上隐藏两个TextViews。在小屏幕上隐藏TextView

我尝试以下(这不是我完整的代码,而且是必要的):

public class HeaderFooterFragment extends Fragment { 
private TextView lable; 
private TextView app; 

@Override 
    public void onActivityCreated(Bundle savedInstanceState) 
    { 
    lable = (TextView) fragmentView.findViewById(R.id.lable); 
    app = (TextView) fragmentView.findViewById(R.id.app); 
// some code... 

    super.onActivityCreated(savedInstanceState); 
    } 

    public void setLableInvisible() 
    { 
     lable.setVisibility(View.INVISIBLE); 
     app.setVisibility(View.INVISIBLE); 
    } 

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     // Inflate the layout for this fragment 
     fragmentView = inflater.inflate(R.layout.fragment_header_footer, container, false); 

     DisplayMetrics dm = new DisplayMetrics(); 
     getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); 
     int screenWidth = dm.widthPixels; 

     if(screenWidth < 500){ 
      setLableInvisible(); 
     } 

     return fragmentView; 
    } 
} 

我的XML是:

 <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="@dimen/toolbar_height" 
      android:id="@+id/lable" 
      android:layout_weight="0.3" 
      android:textAlignment="gravity" 
      android:gravity="left" 
      android:text="@string/app_name" 
      android:textSize="@dimen/site_fontsize" 
      android:paddingTop="@dimen/site_paddingtop" 
      android:paddingLeft="@dimen/site_paddingleft" 
      android:textColor="@color/site_color" 
      android:scaleType="fitCenter" 
      android:visibility="visible" 
      /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="@dimen/toolbar_height" 
      android:layout_weight="0.05" 
      android:id="@+id/app" 
      android:textAlignment="gravity" 
      android:gravity="left" 
      android:text="@string/app_name_extra" 
      android:textSize="@dimen/apptitlex_fontsize" 
      android:paddingTop="@dimen/apptitlex_paddingtop" 
      android:paddingLeft="@dimen/apptitlex_paddingleft" 
      android:textColor="@color/colorAccent" 
      android:textAllCaps="true" 
      android:layout_alignParentRight="true" 
      android:scaleType="fitCenter" 
      android:visibility="visible" 
      /> 

当我开始在智能手机的应用程序宽度为480像素,我得到一个空对象引用。如果我在更大的屏幕上启动应用,该应用不会崩溃。

在此先感谢。

+0

我得到一个空对象引用.Post错误日志 –

+0

你在不同的值文件夹中使用2布局文件?这可以解释为什么意见不存在。 –

林”不知道,该视图OnActivityCreated尚未创建,尝试在OnCreateView

 lable = (TextView) fragmentView.findViewById(R.id.lable); 
    app = (TextView) fragmentView.findViewById(R.id.app); 
+0

好吧,这是我认为视图还没有创建标签,应用程序仍然是空的,如果初始化在OnActivityCreated – Chol

+0

首先请检查流程通过screenWidth的印刷值和消息里面如果条件,也处理与其他因为icase如果()失败,应该有一个检查。 –

try this and delete onactivitycreated method 

    @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
     { 
      // Inflate the layout for this fragment 
      fragmentView = inflater.inflate(R.layout.fragment_header_footer, container, false); 
    lable = (TextView) fragmentView.findViewById(R.id.lable); 
     app = (TextView) fragmentView.findViewById(R.id.app); 
      DisplayMetrics dm = new DisplayMetrics(); 
      getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); 
      int screenWidth = dm.widthPixels; 

      if(screenWidth < 500){ 
       setLableInvisible(); 
      } 

      return fragmentView; 
     } 

初始化的TextView声明的TextView的onCreateView代替onActivityCreated部分

View RootView; //Declare Global 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 
    { 

     RootView = inflater.inflate(R.layout.fragment_header_footer, container, false); 
     lable = (TextView) RootView.findViewById(R.id.lable); 
     app = (TextView) RootView.findViewById(R.id.app); 

     // Add Your staff here 

     return RootView; 
    } 

相反这个

下面的代码
setLableInvisible(); 

使用隐藏的TextView

app.setVisibility(View.INVISIBLE) 

类似地用户它第二TextView的。 谢谢