Android-GridView與ScrollView共用的衝突問題(類似ListView)
》由於ListView,GridView本身都繼承於ScrollView,一旦在ScrollView中巢狀ScrollView,在ScrollView中巢狀使用ListView或者GridView,ListView只會顯示一行多一點。兩者進行巢狀,即會發生衝突。核心解決方案:重寫ListView或者GridView的OnMesure方法。重寫GridView方法,使其在繪製時重新計算GridView高度
---------------------
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
*
* @author 作者 :desaco
*
* @version 建立時間:2016-1-22 上午9:43:33
*
*/
public class CustomGridView extends GridView{
public CustomGridView(Context context) {
super(context);
}
public CustomGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
----------------------------------
public class MyGridView extends GridView {
private boolean haveScrollbar = true;
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* 設定是否有ScrollBar,當要在ScollView中顯示時,應當設定為false。 預設為 true
*
* @param haveScrollbars
*/
public void setHaveScrollbar(boolean haveScrollbar) {
this.haveScrollbar = haveScrollbar;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (haveScrollbars == false) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}
------------------------
XML程式碼如下:
<cn.com.example.fang_com.beta_content.iwidgets.CustomGridView
android:id="@+id/common_show_workbenchs_gview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_color"
android:listSelector="#00000000"
android:numColumns="2"
android:horizontalSpacing="1dp"
android:verticalSpacing="1dp"
android:scrollbars="none" />
---------------------------------
import android.content.Context;
import android.util.AttributeSet;
import android.view.View.MeasureSpec;
import android.widget.ListView;
public class TestListView extends ListView{
public TestListView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public TestListView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public TestListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
相關文章
- android NestedScrollView和ListView衝突問題AndroidView
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- 解決Flutter的ListView巢狀ListView滑動衝突以及無限高度問題FlutterView巢狀
- 從原理上說說ScrollView巢狀ListView的問題View巢狀
- scrollview 的滑動衝突 viewpager等都適用Viewpager
- VMware無法啟動/VMware和wsl衝突問題/VMware與Hyper-V衝突問題
- PtrClassicFrameLayout與viewpager橫向滑動衝突的問題Viewpager
- JAR衝突問題的解決JAR
- Android Webview和ScrollView衝突和WebView使用總結AndroidWebView
- @AllArgsConstructor與@Value共用的問題解決Struct
- wsl docker 和 ubuntu 衝突問題DockerUbuntu
- git 解決版本衝突問題Git
- mapstruct結合lombok使用的衝突問題StructLombok
- ivew表格中render函式與tooltip:true衝突問題函式
- GO 問題之多版本衝突解決Go
- Android 解決BottomSheetDialog 拖曳衝突問題Android
- 一個網路IP地址衝突的問題
- jQuery.noConflict() 方法—— jquery庫與其他庫衝突的問題解決jQuery
- TCPUDP 共用埠問題TCPUDP
- max() group by共用問題
- oracle 序列值導致的主鍵衝突問題Oracle
- Git Worktree:解決分支依賴衝突的問題Git
- anaconda中python環境路徑衝突問題Python
- 解決gerrit commit後pull發生衝突的問題MIT
- Scrollview 和 內部 recycleview 高度固定時巢狀衝突的一種解決方法View巢狀
- JAR衝突問題的解決以及執行狀態下如何檢視載入的類JAR
- ScrollView巢狀ListView解決辦法以及原理View巢狀
- HTML中兩個tabs導航衝突問題的解決方法HTML
- 巢狀ScrollView問題解決思路巢狀View
- 徹底解決SLF4J的日誌衝突的問題
- javamelody與swagger註解衝突JavaSwagger
- 一行核心程式碼做出類似tableViewHeaderView和AppStore裡的ScrollView懸浮條效果ViewHeaderAPP
- 請教一個關於 STF 依賴的 node 與 Appium 依賴的 node 版本衝突問題APP
- js 轉化類似這樣的時間( /Date(1389060261000)/)問題JS
- 簡單介紹Lombok使用@Tolerate實現衝突相容問題Lombok
- 自動檢測ARouter路由地址分組使用衝突問題路由
- Github Fork倉庫的衝突與同步管理Github
- android:listView Button 焦點問題AndroidView
- KDE 發現類似 Autorun.inf 的漏洞,問題已修復