如何锁定片段的屏幕方向为在运行时横向
我有一个活动的ist片段设置为普通potrait方向,但加载第二个片段时,我需要锁定第二个片段的方向为横向。有可能这样做吗?如何锁定片段的屏幕方向为在运行时横向
这是我的Java片段类
public class DeputationsFragment extends Fragment implements AdapterView.OnItemSelectedListener{
LinearLayout ll;
RecyclerView recyclerView;
SessionManager sessionManager;
CheckBox checkBox;
Spinner reportType;
String[] reportTypes,reportCodes;
String reportCode;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
return inflater.inflate(R.layout.fragment_deputations, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
sessionManager=SessionManager.NewInstance(getActivity());
ll=(LinearLayout)view.findViewById(R.id.ll1);
recyclerView=(RecyclerView)view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
checkBox=(CheckBox)view.findViewById(R.id.sno);
reportType=(Spinner)view.findViewById(R.id.spin_report);
reportType.setOnItemSelectedListener(this);
if(Constants.isOnline())
{
getTypes();
}
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
reportCode=reportCodes[i];
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
private void getTypes()
{
AsyncHttpClient client=new AsyncHttpClient();
String url=getResources().getString(R.string.urlReportType);
Constants.showProgress(getActivity());
client.get(url, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
Constants.dismissProgress();
try {
int p1 = responseString.indexOf(">"); Constants.dismissProgress();
Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show();
int p2 = responseString.lastIndexOf("<");
String r = responseString.substring(p1 + 1, p2);
p1 = r.indexOf(">");
r = r.substring(p1 + 1, r.length());
JSONArray jsonArray = new JSONArray(r);
reportTypes = new String[jsonArray.length()];
reportCodes = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
reportTypes[i] = (jsonObject.getString("Name"));
reportCodes[i] = (jsonObject.getString("Value"));
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, reportTypes);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
reportType.setAdapter(arrayAdapter);
reportType.setSelection(0);
reportCode = reportCodes[0];
getDeputations();
} catch (Exception e) {
Constants.dismissProgress();
Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show();
}
}
});
}
void getDeputations()
{
Constants.showProgress(getActivity());
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
String url=getResources().getString(R.string.urlDeputationRequest);
params.put("DistrictCode","ydRRTTxkdt6Trx91pX1+cA==");
params.put("ReportType","1");
client.get(url, params, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
try {
Constants.dismissProgress();
int p1 = responseString.indexOf(">");
int p2 = responseString.lastIndexOf("<");
String r = responseString.substring(p1 + 1, p2);
p1 = r.indexOf(">");
r = r.substring(p1 + 1, r.length());
JSONArray jsonArray = new JSONArray(r);
RecyclerDeputations recyclerDeputations=new RecyclerDeputations(jsonArray,getActivity());
ll.setVisibility(View.VISIBLE);
recyclerView.setAdapter(recyclerDeputations);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
}
catch (Exception e)
{
}
}
});
}
}
这是布局文件:
<?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:padding="5dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/ll"
android:background="@color/colorAccent"
android:layout_marginTop="10dp"
android:weightSum="4">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1.7"
android:gravity="right"
android:padding="3dp"
android:text="Report Type"
android:textStyle="bold" />
<RelativeLayout
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="2.3"
android:gravity="left"
android:padding="3dp"
android:background="@color/white"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
<Spinner
android:id="@+id/spin_report"
android:layout_width="match_parent"
android:popupBackground="@color/white"
android:gravity="left"
android:layout_height="match_parent"
android:textSize="8sp"
android:scrollbars="horizontal"/>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="8.5"
android:background="#386FA5"
android:id="@+id/ll1"
android:orientation="horizontal">
<CheckBox
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.3"
android:gravity="center_vertical"
android:layout_gravity="start"
android:text="All"
android:background="@drawable/borders"
android:id="@+id/sno"/>
<TextView
android:layout_width="0dp"
android:text="S.No."
android:gravity="start"
android:layout_gravity="start"
android:background="@drawable/borders"
android:id="@+id/serial"
android:textSize="12sp"
android:padding="3dp"
android:layout_height="match_parent"
android:layout_weight=".5" />
<TextView
android:layout_width="0dp"
android:text="Name"
android:id="@+id/name"
android:gravity="start"
android:layout_gravity="start"
android:textSize="12sp"
android:background="@drawable/borders"
android:padding="3dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="0dp"
android:id="@+id/from"
android:gravity="start"
android:textSize="12sp"
android:layout_gravity="start"
android:text="From"
android:background="@drawable/borders"
android:padding="3dp"
android:layout_height="match_parent"
android:layout_weight="1.4" />
<TextView
android:layout_width="0dp"
android:id="@+id/to"
android:text="To"
android:gravity="start"
android:textSize="12sp"
android:layout_gravity="start"
android:background="@drawable/borders"
android:padding="3dp"
android:layout_height="match_parent"
android:layout_weight="1.3" />
<TextView
android:layout_width="0dp"
android:id="@+id/req_date"
android:text="Request Date"
android:gravity="start"
android:textSize="12sp"
android:layout_gravity="start"
android:background="@drawable/borders"
android:padding="3dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="0dp"
android:id="@+id/pending"
android:text="Pending With"
android:gravity="start"
android:textSize="12sp"
android:layout_gravity="start"
android:background="@drawable/borders"
android:padding="3dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="0dp"
android:id="@+id/remarks"
android:text="Remarks"
android:gravity="start"
android:textSize="12sp"
android:layout_gravity="start"
android:background="@drawable/borders"
android:padding="3dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"/>
</LinearLayout>
我已经实现相同的功能自己。除了一个片段以外,我的应用程序被锁定为肖像模式。为了实现正确的功能,我使用android:screenOrientation="nosensor"
作为活动(在Manifest文件中),防止由于用户旋转设备而导致方向改变。
我还使用android:configChanges="keyboardHidden|orientation|screenSize"
来防止活动在方向更改时重新启动。否则,很容易在活动重新开始的循环中结束,进入正确的片段并再次改变方向,重复。
在该片段中的onResume()
方法我称之为getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
和它的onPause()
我打电话getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
希望这可以帮助你!
试试这个在您的onCreate
设置Landscape
编程您activities or fragments
。
活动
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
片段
rootView后在Java中加入这一行
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
定位属性是每个活动,这样你可以宣布定向为只包含片段的活动,以便它处于横向和横向位置其余的活动将保持原样。
所以你需要设置方位onCreateView每个片段的 PLSE检查下面的代码:
FragmentA
public class FragmentA extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_a, container, false);
changeFragmentOrientation();
return view;
}
}
public void changeFragmentOrientation(){
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
FragmentB
public class FragmentB extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_b, container, false);
changeFragmentOrientation();
return view;
}
}
public void changeFragmentOrientation(){
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
覆盖功能setUserVisibleHint()在第二个片段,然后用以下代码
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
Activity curActivity = getActivity();
if(curActivity != null){
curActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
}
这将是最好的选择。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
Activity a = getActivity();
if(a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
好运与乌尔项目:)
这是一个'Fragment',你不需要声明'Fragments 'on AndroidManifest.xml'然后...答案是不正确的。 – Aspicas
请发布您的代码 – Basi
发布完成 –
http:// *。com/questions/12704009/setting-the-orientation-for-only-1-fragment-in-my-activity-while-the-rest-is-in – kgandroid