2016-02-29 119 views
0

我試圖在寬度小於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佈局文件?這可以解釋爲什麼意見不存在。 –

回答

1

林」不知道,該視圖OnActivityCreated尚未創建,嘗試在OnCreateView

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

好吧,這是我認爲視圖還沒有創建標籤,應用程序仍然是空的,如果初始化在OnActivityCreated – Chol

+0

首先請檢查流程通過screenWidth的印刷值和消息裏面如果條件,也處理與其他因爲icase如果()失敗,應該有一個檢查。 –

0
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; 
     } 
0

初始化的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; 
    } 
0

相反這個

下面的代碼
setLableInvisible(); 

使用隱藏的TextView

app.setVisibility(View.INVISIBLE) 

類似地用戶它第二TextView的。 謝謝